採用 Excel 範本生成報表,可充分利用 Excel 強大編輯、列印功能。先在 Excel 設計好範本,程式執行時開啟範本、填入資料、另存新檔/列印預覽。
_Application ExcelApp;
Workbooks wbsMyBooks;
_Workbook wbMyBook;
Worksheets wssMysheets;
_Worksheet wsMysheet;
Range rgMyRge;
// 1. 啟動 Excel
if (!ExcelApp.CreateDispatch("Excel.Application")) { AfxMessageBox("啟動失敗"); return; }
ExcelApp.SetVisible(FALSE);
// 2. 開啟範本建立新活頁簿
char path[MAX_PATH]; GetCurrentDirectory(MAX_PATH, path);
CString strPath = path + "\\template1";
wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks());
wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t(strPath)));
// 3. 取得工作表集合與第一張表
wssMysheets.AttachDispatch(wbMyBook.GetWorksheets());
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet1")));
// 4. 複製工作表產生多頁報表 (共 4 頁)
for (int i=0; i<4; ++i)
wsMysheet.Copy(vtMissing, _variant_t(wsMysheet));
// 5. 重新命名各工作表
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet1")));
wsMysheet.SetName("第1頁");
for (int i=0; i

Worksheet.Copy 複製整張表含格式,快速產生多頁。Worksheet.GetNext() 遍歷工作表集合。Range.SetItem 以 (row, col, value) 寫入儲存格,參數為 VARIANT。AttachDispatch/ReleaseDispatch 管理介面指標,避免記憶體洩漏。範本法分離版面設計與程式邏輯,維護彈性大。歡迎開發者分享更佳作法。