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

C++ Builder 操作 Excel 的兩種方法 (OLE 自動化與變體)

     編輯:VC 教學

方法一:OLE 自動化 (Variant 介面)

C++ Builder 透過 Variant 類別的四大方法間接呼叫 Excel 物件模型:

  • OlePropertyGet (取屬性) → 宏 PG
  • OlePropertySet (設屬性) → 宏 PS
  • OleFunction (呼叫函數) → 宏 FN
  • OleProcedure (呼叫程序) → 宏 PR

需包含 vcl\utilcls.h。範例:

#define PG OlePropertyGet
#define PS OlePropertySet
#define FN OleFunction
#define PR OleProcedure

Variant Excel = Variant::CreateObject("Excel.Application");
Excel.PS("Visible", true);
Variant Workbooks = Excel.PG("Workbooks");
Variant Workbook = Workbooks.FN("Add");
Variant Sheets = Workbook.PG("Sheets");
Variant Sheet = Sheets.PG("Item", 1);
Sheet.PG("Cells", 1, 1).PS("Value", "Hello Excel");
Workbook.FN("SaveAs", "C:\\test.xls");
Excel.PR("Quit");

方法二:使用 Excel 類型庫 (早期繫結)

在專案中匯入 Excel 類型庫 (Project → Import Type Library),產生對應的 C++ 包裝類別 (如 _Application, _Workbook, _Worksheet, Range 等)。此法提供程式碼提示、編譯期型別檢查、效能較佳。

#include "Excel_TLB.h"
_ApplicationPtr Excel;
Excel.CreateInstance("Excel.Application");
Excel->Visible = true;
_WorkbookPtr Book = Excel->Workbooks->Add();
_WorksheetPtr Sheet = Book->ActiveSheet;
Sheet->Cells->Item[1][1] = "Hello";
Book->SaveAs("C:\\test.xls");
Excel->Quit();

比較與建議

特性Variant (晚期繫結)類型庫 (早期繫結)
部署無需額外檔案需註冊/部署 TLB 或包含產生的 .h/.cpp
開發效率無智慧提示,易拼錯完整代碼提示,編譯檢查
執行效能較慢 (IDispatch 呼叫)較快 (虛函數表直接呼叫)
版本相容較好 (動態解析)需對應版本 TLB

簡單腳本或版本不固定環境用 Variant;大型專案、追求穩定效能建議匯入類型庫。

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