首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

VC++ 呼叫 Excel 範本自動生成報表實作

     編輯:關於VC++

前言

採用 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 管理介面指標,避免記憶體洩漏。

結語

範本法分離版面設計與程式邏輯,維護彈性大。歡迎開發者分享更佳作法。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved