VC中调用EXECL模板生成报表 - SEUU的专栏 - CSDN博客
来源:百度文库 编辑:神马文学网 时间:2024/05/01 02:58:27
VC中调用EXECL模板生成报表
●新建Excel模板文件tmp.xlt ●准备
新建一对话框工程,打开添加类向导,选择“类型库中的MFC类”
选择Office安装文件夹下面的Excel9.OLB文件,然后选择_Application、Workbooks、_Workbook、Worksheets、_Worksheet、Range,加入新类,分别为_Application、Workbooks、_Workbook、Worksheets、_Worksheet、Range 将excel9.h excel9.cpp拷贝到工程目录并加入工程 ●编码实现:
先保护两个头文件 #include "comdef.h"
#include "Excel9.h"
添加一按钮,加入下列代码: _Application ExcelApp;
Workbooks wbsMyBooks;
_Workbook wbMyBook;
Worksheets wssMysheets;
_Worksheet wsMysheet;
Range rgMyRge; //创建Excel 2000服务器(启动Excel)
if (!ExcelApp.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox("创建Excel服务失败!");
return;
}
ExcelApp.SetVisible(false); //利用模板文件建立新文档
char path[MAX_PATH];
GetCurrentDirectory(MAX_PATH,path);
CString strPath = path;
strPath += "\\tmp";
wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true);
wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t(strPath))); //得到Worksheets
wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),true); //得到sheet1
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet1")),true); //添加模板个数
for( int i=0; i<4; i++)
{
wsMysheet.Copy(vtMissing,_variant_t(wsMysheet));
}
CString str1;
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet1")),true);
str1 = "第1页";
wsMysheet.SetName(str1);
for(i=0;i wsMysheet = wsMysheet.GetNext();
str1.Format("第%d页",i+2);
wsMysheet.SetName(str1);
}
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("第1页")),true); //得到全部Cells,此时,rgMyRge是cells的集合
rgMyRge.AttachDispatch(wsMysheet.GetCells(),true); //设置1行1列的单元的值
CString str=_TEXT("22:12");
rgMyRge.SetItem(_variant_t((long)2),_variant_t((long)1),_variant_t("0001"));
rgMyRge.SetItem(_variant_t((long)2),_variant_t((long)2),_variant_t("哈哈"));
rgMyRge.SetItem(_variant_t((long)2),_variant_t((long)3),_variant_t("20"));
rgMyRge.SetItem(_variant_t((long)2),_variant_t((long)4),_variant_t("男")); rgMyRge.SetItem(_variant_t((long)3),_variant_t((long)1),_variant_t("0002"));
rgMyRge.SetItem(_variant_t((long)3),_variant_t((long)2),_variant_t("我我"));
rgMyRge.SetItem(_variant_t((long)3),_variant_t((long)3),_variant_t("66"));
rgMyRge.SetItem(_variant_t((long)3),_variant_t((long)4),_variant_t("女")); //将表格保存
strPath = path;
strPath += "\\result.xls";
DeleteFile(strPath);
wsMysheet.SaveAs(strPath,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing);
ExcelApp.SetVisible(true);
wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t(strPath)));
wbMyBook.PrintPreview(_variant_t(false));
ExcelApp.Quit(); //释放对象
rgMyRge.ReleaseDispatch();
wsMysheet.ReleaseDispatch();
wssMysheets.ReleaseDispatch();
wbMyBook.ReleaseDispatch();
wbsMyBooks.ReleaseDispatch();
ExcelApp.ReleaseDispatch();
}
●运行结果
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/SEUU/archive/2004/11/23/192840.aspx
●新建Excel模板文件tmp.xlt ●准备
新建一对话框工程,打开添加类向导,选择“类型库中的MFC类”
选择Office安装文件夹下面的Excel9.OLB文件,然后选择_Application、Workbooks、_Workbook、Worksheets、_Worksheet、Range,加入新类,分别为_Application、Workbooks、_Workbook、Worksheets、_Worksheet、Range 将excel9.h excel9.cpp拷贝到工程目录并加入工程 ●编码实现:
先保护两个头文件 #include "comdef.h"
#include "Excel9.h"
添加一按钮,加入下列代码: _Application ExcelApp;
Workbooks wbsMyBooks;
_Workbook wbMyBook;
Worksheets wssMysheets;
_Worksheet wsMysheet;
Range rgMyRge; //创建Excel 2000服务器(启动Excel)
if (!ExcelApp.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox("创建Excel服务失败!");
return;
}
ExcelApp.SetVisible(false); //利用模板文件建立新文档
char path[MAX_PATH];
GetCurrentDirectory(MAX_PATH,path);
CString strPath = path;
strPath += "\\tmp";
wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true);
wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t(strPath))); //得到Worksheets
wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),true); //得到sheet1
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet1")),true); //添加模板个数
for( int i=0; i<4; i++)
{
wsMysheet.Copy(vtMissing,_variant_t(wsMysheet));
}
CString str1;
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet1")),true);
str1 = "第1页";
wsMysheet.SetName(str1);
for(i=0;i
str1.Format("第%d页",i+2);
wsMysheet.SetName(str1);
}
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("第1页")),true); //得到全部Cells,此时,rgMyRge是cells的集合
rgMyRge.AttachDispatch(wsMysheet.GetCells(),true); //设置1行1列的单元的值
CString str=_TEXT("22:12");
rgMyRge.SetItem(_variant_t((long)2),_variant_t((long)1),_variant_t("0001"));
rgMyRge.SetItem(_variant_t((long)2),_variant_t((long)2),_variant_t("哈哈"));
rgMyRge.SetItem(_variant_t((long)2),_variant_t((long)3),_variant_t("20"));
rgMyRge.SetItem(_variant_t((long)2),_variant_t((long)4),_variant_t("男")); rgMyRge.SetItem(_variant_t((long)3),_variant_t((long)1),_variant_t("0002"));
rgMyRge.SetItem(_variant_t((long)3),_variant_t((long)2),_variant_t("我我"));
rgMyRge.SetItem(_variant_t((long)3),_variant_t((long)3),_variant_t("66"));
rgMyRge.SetItem(_variant_t((long)3),_variant_t((long)4),_variant_t("女")); //将表格保存
strPath = path;
strPath += "\\result.xls";
DeleteFile(strPath);
wsMysheet.SaveAs(strPath,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing);
ExcelApp.SetVisible(true);
wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t(strPath)));
wbMyBook.PrintPreview(_variant_t(false));
ExcelApp.Quit(); //释放对象
rgMyRge.ReleaseDispatch();
wsMysheet.ReleaseDispatch();
wssMysheets.ReleaseDispatch();
wbMyBook.ReleaseDispatch();
wbsMyBooks.ReleaseDispatch();
ExcelApp.ReleaseDispatch();
}
●运行结果
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/SEUU/archive/2004/11/23/192840.aspx
VC中调用EXECL模板生成报表 - SEUU的专栏 - CSDN博客
VC积累 - cherryt的专栏 - CSDN博客
VC调试常用方法集 - Oo_Oo_的专栏 - CSDN博客
VC调试常用方法集 - Oo_Oo_的专栏 - CSDN博客
VC++ 安装程序制作 - zhongyhc的专栏 - CSDN博客
VS中def文件对于生成dll和lib文件的作用 - caomiao2006的专栏 - CSDN博客
vc中如何调用webservice? VC/MFC / 进程/线程/DLL - CSDN社...
运用VC或Java对Office进行编程操作 - etre的专栏 - CSDN博客
word文档如何自动生成目录 - 张磊的专栏 - CSDN博客
word文档如何自动生成目录 - 张磊的专栏 - CSDN博客
word文档如何自动生成目录 - 张磊的专栏 - CSDN博客.
周海汉:标准模板库stl 容器的线程安全 - 周海汉的开发专栏 - CSDN博客
baozhengw的专栏 - CSDN博客
在VC中调用 WebService
在VC中调用 WebService
用Delphi实现四人帮(Gof)设计模式-6 模板方法 Template Method - cococlout的专栏 - CSDN博客
使用PowerDesigner 11自己的模板生成数据字典报表-竹子 QQ:3777854...
vc中调用Com组件的方法详解
vc中调用Com组件的方法详解
在VC 中读写INI文件 - 技术收藏 - CSDN博客
AGPS简介 - kv110的专栏 - CSDN博客
OpenMAX简介 - shenbin1430的专栏 - CSDN博客
Android flinger - simmer_ken的专栏 - CSDN博客
windows 命令 - orangeman1982112的专栏 - CSDN博客