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

来源:互联网 发布:淘宝快递费用价格表 编辑:程序博客网 时间:2024/06/05 07:17

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();

}