VC中调用EXECL模板生成新的Excel文档

TestExcel::Button1()

{

// TODO: Add your control notification handler code here

// 声明所需要使用到的对象
  _Application ExcelApp;
  Workbooks wbsMyBooks;
  _Workbook wbMyBook;
  Worksheets wssMysheets;
  _Worksheet wsMysheet;
  Range rgMyRge;   
  //创建Excel 2000服务器(启动Excel)
  if (!ExcelApp.CreateDispatch("Excel.Application",NULL))
  {
    AfxMessageBox("创建Excel服务失败!");
    exit(1);
  }

//设置Excel不可见
  ExcelApp.SetVisible(false);
  //利用模板文件建立新文档
  char path[MAX_PATH];
  GetCurrentDirectory(MAX_PATH,path); //获取当前应用程序或进程的运行目录并将其存入path中
  CString strPath = path;
  strPath += "\\1.xlsx"; //拼成一个完整的文件的绝对路径
  wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true); //获得wbsMyBooks
  wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t(strPath))); //获得wbMyBook 其中WbsMyBooks.Add是用strPath做模板得到wbsMyBook
  //得到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<wssMysheets.GetCount()-1;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("21:12");
  rgMyRge.SetItem(_variant_t((long)7),_variant_t((long)3),_variant_t(str)); //设置单元格中的值7为行、3为列、str为要设置的值
  rgMyRge.SetItem(_variant_t((long)9),_variant_t((long)3),_variant_t(str));
  rgMyRge.SetItem(_variant_t((long)7),_variant_t((long)4),_variant_t(str));
  rgMyRge.SetItem(_variant_t((long)8),_variant_t((long)4),_variant_t(str));
  rgMyRge.SetItem(_variant_t((long)9),_variant_t((long)4),_variant_t(str));
  rgMyRge.SetItem(_variant_t((long)10),_variant_t((long)4),_variant_t(str));
  rgMyRge.SetItem(_variant_t((long)11),_variant_t((long)4),_variant_t(str));
  rgMyRge.SetItem(_variant_t((long)12),_variant_t((long)4),_variant_t(str));
  //将表格保存
  strPath = path;
  strPath += "\\2.xls";
  wsMysheet.SaveAs(strPath,vtMissing,vtMissing,vtMissing,vtMissing,
    vtMissing,vtMissing,vtMissing,vtMissing);
  ExcelApp.SetVisible(true);
  wbMyBook.PrintPreview(_variant_t(false)); //打印预览
  //释放对象
  rgMyRge.ReleaseDispatch();
  wsMysheet.ReleaseDispatch();
  wssMysheets.ReleaseDispatch();
  wbMyBook.ReleaseDispatch();
  wbsMyBooks.ReleaseDispatch();
  ExcelApp.ReleaseDispatch();

  wbsMyBooks.Close();

  ExcelApp.Quit();

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值