合作联系
  wanwqing@vip.163.com
  0790-XXXXXXX
关于实验室
VC++如何将数据导出到Excel
发布者:实验室   时间:2019-01-28 12:20:17   浏览次数:201


 _Application app;    
 Workbooks books;
 _Workbook book;
 Worksheets sheets;
 _Worksheet sheet;
 Range range;

 //创建Excel 2000服务器(启动Excel) 
 if (!app.CreateDispatch("Excel.Application",NULL)) 
 { 
  AfxMessageBox("创建Excel服务失败!"); 
  exit(1); 
 } 
 app.SetVisible(false); 
 //利用模板文件建立新文档 
 char path[MAX_PATH];
 GetCurrentDirectory(MAX_PATH,path);
 CString strPath = path;
 strPath += "\\ExcelPrint";
 books.AttachDispatch(app.GetWorkbooks(),true);
 book.AttachDispatch(books.Add(_variant_t(strPath)));
 //得到Worksheets 
 sheets.AttachDispatch(book.GetWorksheets(),true); 
 //得到sheet1 
 sheet.AttachDispatch(sheets.GetItem(_variant_t("sheet1")),true);
 CString str1;
 str1 = "第1页";
 sheet.SetName(str1);
 for( int i=0;i<sheets.GetCount()-1;i++)
 {
  sheet = sheet.GetNext();
  str1.Format("第%d页",i+2);
  sheet.SetName(str1);
 }
 sheet.AttachDispatch(sheets.GetItem(_variant_t("第1页")),true);
 //得到全部Cells,此时,rgMyRge是cells的集合 
 range.AttachDispatch(sheet.GetCells(),true); 
 CString sText;

 //设置表头
    CString bt[6]={"日期","车牌号","实际里程(km)","用油量(升)","油耗","备注"};
 for(int n=1;n<7;n++)
  range.SetItem(_variant_t((long)(2)),_variant_t((long)(n+1)),
    _variant_t(bt[n-1]));//m_list.GetColumn()
 
//从LISTVIEW 表格中读取数据
    int nRow;
 nRow=m_list.GetItemCount();
    int k=0;
 while(k<nRow)
 {
  for (int j=0;j<5;j++)
         range.SetItem(_variant_t((long)(k+3)),_variant_t((long)(j+2)),_variant_t(m_list.GetItemText(k,j)));
     k++;
 }
 
 app.SetVisible(true); 
 book.PrintPreview(_variant_t(true));  //打印预览 原来的参数是 false
 //释放对象 
 range.ReleaseDispatch(); 
 sheet.ReleaseDispatch(); 
 sheets.ReleaseDispatch(); 
 book.ReleaseDispatch(); 
 books.ReleaseDispatch();
 app.ReleaseDispatch();