c++ 合并 多个Excel
文章转自王牌软件
站长推荐:NSetup一键部署软件
一键式完成美化安装包制作,自动增量升级,数据统计,数字签名。应对各种复杂场景,脚本模块化拆分,常规复杂的脚本代码,图形化设置。无需专业的研发经验,轻松完成项目部署。(www.nsetup.cn)
只回答业务咨询
站长推荐:NSetup一键部署软件
一键式完成美化安装包制作,自动增量升级,数据统计,数字签名。应对各种复杂场景,脚本模块化拆分,常规复杂的脚本代码,图形化设置。无需专业的研发经验,轻松完成项目部署。(www.nsetup.cn)
csdn
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
我写了一个用与合并两个Excel文件的函数,贴出来缓解仁兄的编码之急! 说明:将SourceFile文件中的全部工作表插入到DestFile文件中,插入位置是在DestFile文件中最后一个工作表后面。我使用的Excel 2000。 Step1: 首先别忘记引入Excel 2000 的类型库,方法:选择VC环境中Classwizard->Message Maps中Add Class下拉按钮,选择From a type library,找到Excel9.OLB(一般位于Office的安装目录下,可以搜索一下), 在出现的“Confirm Classes”对话框中选择列表框中全部内容,点击OK。 Step2: 在项目中使用到Excel Automation的地方包含excel9.h文件,即:#include "excel9.h" Ster3: 下面是我写的合并函数,具体说明见其中注释: void CDemoDlg::MergeExcel(CString DestFile, CString SourceFile) { ::CoInitialize(NULL); _Application app; //加载Excel服务器进程 if (!app.CreateDispatch("Excel.Application",NULL)) AfxMessageBox("创建Excel服务失败!"); app.SetVisible(TRUE); Workbooks wbSet; wbSet.AttachDispatch(app.GetWorkbooks()); //打开目标文件 _Workbook wbDest; wbDest.AttachDispatch(wbSet.Add(_variant_t((LPCTSTR)DestFile))); //打开源文件 _Workbook wbSource; wbSource.AttachDispatch(wbSet.Add(_variant_t((LPCTSTR)SourceFile))); Worksheets destWsSet; destWsSet.AttachDispatch(wbDest.GetWorksheets()); Worksheets sourceWsSet; sourceWsSet.AttachDispatch(wbSource.GetWorksheets()); // 获取目标文件和源文件中的Worksheet数量 long destSheetCount = destWsSet.GetCount(); long sourceSheetCount = sourceWsSet.GetCount(); //得到目标文件中最后一个Worksheet,源文件中的Worksheet将插入在她后面 _Worksheet lastWsInDest; lastWsInDest.AttachDispatch( destWsSet.GetItem(_variant_t((long)destSheetCount))); _Worksheet sourceWS; _Worksheet insertWS; Range rgSource, rgDest; //遍历源文件中Worksheet集合,逐一选择、复制内容,然后 //粘贴到目标文件最后一个Worksheet后面 for(int i=1; i<=sourceSheetCount; i++) { //复制源文件中Worksheet内容 sourceWS.AttachDispatch(sourceWsSet.GetItem(_variant_t((long)i))); rgSource.AttachDispatch(sourceWS.GetCells()); rgSource.Copy(vtMissing); //在目标文件最后一个Worksheet后插入一新Worksheet,同时粘贴前面复制内容 insertWS.AttachDispatch(destWsSet.Add(vtMissing, _variant_t(lastWsInDest), vtMissing, vtMissing)); insertWS.Paste(vtMissing, vtMissing); insertWS.SetName(sourceWS.GetName()); insertWS.Activate(); rgDest.AttachDispatch(insertWS.GetRange(_variant_t("A1"), _variant_t("A1"))); rgDest.Select(); } app.SetCutCopyMode(0); wbSource.Close(vtMissing, vtMissing, vtMissing); } |
学习日记,兼职软件设计,软件修改,毕业设计。
本文出自 学习日记,转载时请注明出处及相应链接。
本文永久链接: https://www.softwareace.cn/?p=74
一条评论
java http://ttsiangogole.iteye.com/blog/1340947