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

C++Builder 存取 Excel 的兩大技術路線:OLE 自動化與 ODBC 資料庫連接

     編輯:關於C++

C++Builder 操作 Excel 主流有兩條路徑:OLE 自動化 (需安裝 Excel,功能全、效能較低) 與 ODBC (無需 Excel,視為資料庫,唯讀/寫入受限、效能高)。

一、OLE 自動化:Variant 封裝 IDispatch

C++Builder 不支援 VB/Delphi 的語法糖,需透過 Variant 四大方法:

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

引用 #include 。

VB → C++Builder 對照範例

// VB: Ex.ActiveWorkBook.ActiveSheet.Cells(1,2).Value = 3
// C++Builder:
Variant Ex, Wb, Sh1;
Ex = Variant::CreateObject("Excel.Application");
Ex.PG("WorkBooks").PR("Open", "c:\\book1.xls");
Wb = Ex.PG("ActiveWorkBook");
Sh1 = Wb.PG("ActiveSheet");
Edit1->Text = Sh1.PG("Cells", 1, 1).PG("Value");
for (int i=1; i<=10; i++)
  for (int j=1; j<=10; j++)
    Sh1.PG("Cells", i, j).PS("Value", i*100+j);
Wb.PR("Save"); Wb.PR("Close"); Ex.PR("Quit");

二、ODBC 存取:將 Excel 視為資料庫

  1. Excel 端定義「命名範圍」作為資料表: 選取區域 (首列為欄位名) → 位址列輸入名稱 (如 ABC) 或「插入→名稱→定義」。
  2. 建立系統 DSN: 控制台 → 32位 ODBC → 加入 Microsoft Excel Driver (*.xls) → 設定資料源名 (如 excel01)、版本、取消「唯讀」、選定工作簿路徑。
  3. C++Builder 專案配置:
    • TDatabase:AliasName=excel01, Name=excel02, 取消 Login prompt。
    • TTable:DatabaseName=excel02, TableName=ABC (命名範圍名)。
    • TDataSource 連接 Table → TDBGrid/TDBNavigator 顯示。
  4. 關鍵提醒: 設計時期必須 Table1->Active = false,否則編譯/執行會報錯 (Excel 被 ODBC 獨佔開啟)。

選擇建議

需求推薦方案
需操作儲存格格式、公式、圖表、VBA、列印OLE 自動化
大量資料讀寫、無 Excel 環境、類 SQL 查詢、高效能ODBC
跨平台、無 Office 授權ODBC 或第三方庫 (libxl, ExcelFormatLib 等)

兩種方案在 Win2000/XP/Win7/Win10、Office 97~2019、C++Builder 4~11 環境均驗證可行。

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