VC利用EXCEL模板实现报表打印

来源:互联网 发布:里约奥运会网络直播 编辑:程序博客网 时间:2024/04/29 06:11

第一步:添加包含文件
#i nclude "excel9.h" //使用EXCEL类需要包含的头文件
#i nclude "comdef.h" //使用EXCEL类需要包含的头文件
(注:需要"excel9.h"和"excel9.cpp",可以到网上下载,如没有可联系我)
如果是excel 2003 则导入excel.exe类

第二步:创建对象
 _Application ExcelApp;
 Workbooks wbsMyBooks;
 _Workbook wbMyBook;
 Worksheets wssMysheets;
 _Worksheet wsMysheet;
 Range rgMyRge;

第三步:创建EXCEL服务器
 /*创建EXCEL服务器*/
 if (!ExcelApp.CreateDispatch("Excel.Application", NULL))
 {
  AfxMessageBox("创建EXCEL服务器失败!");
  return;
 }

第四步:利用EXCEL模板创建EXCEL文档
//strPath为模板的全路径名
 wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(), true);
 try
 {
  wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t(strPath)));
 }
 catch(...)
 {
  AfxMessageBox("EXCEL模板打开失败,请检查文件是否存在!", MB_OK | MB_ICONSTOP);
  ExcelApp.Quit();
  return;

 }

第五步:关联对象
 /*得到Worksheets*/
 wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(), true);
 /*得到Worksheet1*/
 wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet1")), true);
 /*得到全部Cells,此时,rgMyRge是cells的集合*/ 
 rgMyRge.AttachDispatch(wsMysheet.GetCells(),true);

第六步:设置单元格的值
 rgMyRge.SetItem(_variant_t((long)1),_variant_t((long)1),_variant_t("姓名")); //1*1
 rgMyRge.SetItem(_variant_t((long)1),_variant_t((long)2),_variant_t("QQ号")); //1*2
        rgMyRge.SetItem(_variant_t((long)2),_variant_t((long)1),_variant_t("风云在线"));          rgMyRge.SetItem(_variant_t((long)2),_variant_t((long)2),_variant_t("278800584"));

第七步:打印预览

  ExcelApp.SetVisible(true);
  wbMyBook.PrintPreview(_variant_t(false));

第八步:退出EXCEL应用程序
 /*设置保存标志为已保存,则不会弹出保存模板对话框,
 实际上并未保存,只是认为的标志保存了,因为这里不需要保存*/
 wbMyBook.SetSaved(true);
 
 /*退出EXCEL应用程序*/
 ExcelApp.Quit();

第九步:释放对象
 /*释放对象*/ 
 rgMyRge.ReleaseDispatch(); 
 wsMysheet.ReleaseDispatch(); 
 wssMysheets.ReleaseDispatch(); 
 wbMyBook.ReleaseDispatch(); 
 wbsMyBooks.ReleaseDispatch(); 
 ExcelApp.ReleaseDispatch();

 
原创粉丝点击