|
VC中調(diào)用EXECL模板生成報表
●新建Excel模板文件tmp.xlt ●準(zhǔn)備
新建一對話框工程,打開添加類向?qū)?選擇“類型庫中的MFC類” 選擇Office安裝文件夾下面的Excel9.OLB文件,然后選擇_Application、Workbooks、_Workbook、Worksheets、_Worksheet、Range,加入新類,分別為_Application、Workbooks、_Workbook、Worksheets、_Worksheet、Range 將excel9.h excel9.cpp拷貝到工程目錄并加入工程
●編碼實現(xiàn):
先保護(hù)兩個頭文件 #include "comdef.h"
#include "Excel9.h" 添加一按鈕,加入下列代碼: _Application ExcelApp;
Workbooks wbsMyBooks; _Workbook wbMyBook; Worksheets wssMysheets; _Worksheet wsMysheet; Range rgMyRge; //創(chuàng)建Excel 2000服務(wù)器(啟動Excel)
if (!ExcelApp.CreateDispatch("Excel.Application",NULL)) { AfxMessageBox("創(chuàng)建Excel服務(wù)失敗!"); 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); //添加模板個數(shù)
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); //設(shè)置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(); } ●運行結(jié)果 本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/SEUU/archive/2004/11/23/192840.aspx |
|
|