HotXLS 文件

概觀

HotXLS Logo
HotXLS Excel 讀寫元件庫是適用於 Delphi 和 C++Builder 的高效能 Excel 讀寫元件 它無需在電腦上安裝 Microsoft Excel 或 Office,即可建立新的 Excel 試算表,並讀取或修改現有的 XLS 和 XLSX 活頁簿
HotXLS 完全以 Object Pascal 撰寫。它在二進位和 OOXML 層級直接讀寫 Excel 檔案, 因此沒有 COM/OLE 自動化的額外負擔,也不依賴 Office 的授權或安裝。HotXLS 支援 Delphi 和 C++Builder XE5 至 13 Florence
傳統 XLS 色彩格式設定刻意保持以調色盤為基礎的方式。ThemeColor / TintAndShade 的設計決策請參閱 傳統 XLS 色彩模型

雙介面架構

HotXLS 公開兩個並存的介面單元,讓舊版 XLS 程式碼和新的 XLSX 程式碼可以共存,無需進行任何重構:
lxHandle Excel 97–2003 BIFF8 格式(.xls)的主要介面,另支援 HTML、RTF、CSV 和 TSV 匯出 所有現有使用者程式碼可繼續使用此單元而無需變更。進入點: TXLSWorkbookTXLSWorksheetIXLSWorkbookIXLSRange
lxHandleX Excel 2007+ OOXML 格式(.xlsx)和 OpenDocument Spreadsheet(.ods)讀寫的主要介面 提供專屬的活頁簿和工作表型別,以避免將 XLSX 特有行為強加於 BIFF 程式碼路徑。進入點: TXLSXWorkbookTXLSXWorksheetTXLSXCell
兩個介面共用相同的公式引擎、相同的 Unicode 支援層,以及相同的匯出管線 lxHandleX 所公開的完整類別階層請參閱 XLSX 介面概觀

快速入門

下列程式碼片段展示了建立含一個工作表的活頁簿並向儲存格寫入值所需的最少程式碼。

傳統 XLS(lxHandle

uses lxHandle;

var
  Book: IXLSWorkbook;
  ws:   TXLSWorksheet;
begin
  Book := TXLSWorkbook.Create;
  // 新增工作表並命名
  ws := Book.Sheets.Add;
  ws.Name := 'Sheet1';

  // 使用 A1 表示法向儲存格寫入值
  ws.Range['A1'].Value := 'Hello';
  ws.Range['B1'].Value := 42;
  ws.Range['C1'].Formula := '=B1*2';

  // 套用基本格式設定
  ws.Range['A1'].Font.Bold := True;
  ws.Range['A1'].Interior.Color := clYellow;

  Book.SaveAs('output.xls');
end;

XLSX(lxHandleX

uses lxHandleX;

var
  Book: TXLSXWorkbook;
  ws:   TXLSXWorksheet;
  cell: TXLSXCell;
begin
  Book := TXLSXWorkbook.Create;
  try
    ws := Book.Sheets.Add('Sheet1');

    // 寫入字串和數值
    ws.Cells[1, 1].Value := 'Product';
    ws.Cells[1, 2].Value := 'Price';
    ws.Cells[2, 1].Value := 'Widget';
    ws.Cells[2, 2].Value := 9.99;

    // 套用貨幣數字格式
    cell := ws.Cells[2, 2];
    cell.NumberFormat := '$#,##0.00';

    Book.SaveAs('output.xlsx');
  finally
    Book.Free;
  end;
end;
如需涵蓋兩個介面的完整示範專案逐步說明,請參閱 API 導覽範例

功能

檔案 I/O 與串流支援

讀取現有 Excel 檔案、寫入新的或現有的 Excel 檔案、處理傳統 XLS 密碼保護和 XLSX 加密儲存工作流程, 並可從 XLS 和 XLSX 檔案或串流中快速列出工作表名稱,而無需載入整個活頁簿 透過 IXLSWorkbook.OpenCSV 支援以活頁簿方式開啟 CSV 檔案

儲存格值與公式

讀取和寫入所有 Excel 原生型別的儲存格值:數字、字串、日期/時間、布林值和公式 內建計算引擎可在傳統 XLS 和 XLSX 活頁簿中評估公式,支援:
  • 文字函式(LEFTMIDTRIMSUBSTITUTE、…)
  • 日期和工作日函式(DATENETWORKDAYSWORKDAY、…)
  • 工程和進位制轉換函式(BIN2DECHEX2DEC、…)
  • 位元運算函式(BITANDBITORBITXOR、…)
  • 統計和彙總函式(AVERAGESUMIFCOUNTIFS、…)
  • 數學函式(ROUNDMODPOWER、…)
OnUserFunction 回呼可讓您在執行階段處理自訂或不支援的工作表函式 函式簽章和範例請參閱 OnUserFunction 回呼
公式評估範例

儲存格格式設定

完整存取儲存格外觀屬性:
  • 字型 — 名稱、大小、色彩(RGB 或佈景主題色彩 + 色調)、粗體、斜體、底線、 刪除線、上標、下標、陰影和外框
  • 對齊方式 — 水平和垂直對齊、文字方向(角度)、縮排層級、自動換列、 縮小至適當大小,以及閱讀順序(RTL/LTR)
  • 框線 — 四個邊緣和對角線、線條樣式、粗細,以及 RGB / 佈景主題色彩
  • 內部(填滿) — 純色填滿、圖樣填滿、前景色和背景色, 包含具有 TintAndShade 的佈景主題色彩
  • 數字格式 — 日期、時間、貨幣、百分比和科學記號的內建和自訂格式字串
  • 註解 / 附註 — 新增、讀取和設定儲存格註解的樣式

範圍操作

IXLSRange(傳統介面)和 TXLSXRange(XLSX 介面)提供豐富的範圍操作:
  • 合併和取消合併儲存格;存取任一儲存格的合併區域
  • 複製、移動、插入和刪除範圍,並可控制位移方向
  • 對列或欄進行群組和取消群組,以建立大綱/摺疊檢視
  • 根據儲存格內容自動調整列高和欄寬
  • 套用內建具名儲存格樣式(ApplyBuiltinStyle
  • 多重選取區域(TXLSWorksheet.SelectAreas
  • ForEachCell 迭代回呼,用於批次儲存格處理

工作表功能

工作表層級的控制涵蓋:
  • 工作表名稱、索引標籤色彩、可見性(隱藏 / 非常隱藏),以及以索引為基礎的導覽
  • 具有逐權限細部設定的工作表保護;活頁簿層級保護
  • 凍結窗格、分割窗格和捲動位置
  • 含準則的自動篩選範圍;清單資料驗證規則
  • 條件格式設定:色階(2 色和 3 色)、資料橫條和圖示集
  • 在工作表中尋找文字和取代文字
  • 檢視選項:格線色彩、顯示公式模式、顯示零值、顯示標題、 顯示由右至左、顯示大綱符號和縮放層級
  • 結構化表格(TXLSTable / TXLSXTable):新增、存取和設定含標題列和帶狀列的 Excel 表格樣式
  • 圖表:透過 TXLSWorksheetsAddChartSheetTXLSXChart 新增圖表工作表和內嵌圖表

超連結與具名範圍

透過 IXLSHyperLinks 新增和讀取超連結(URL、mailto 和活頁簿內儲存格參照) 透過 IXLSNames / TXLSXDefinedNames 在活頁簿和工作表範圍定義及解析具名範圍 具名範圍可在公式中使用,並可透過 RefersToRange 解析回儲存格範圍

圖像與圖形

透過 TXLSShapes.AddPicture / TXLSXWorksheet.AddImage 將點陣圖像(BMP、JPG、PNG、GIF)內嵌至工作表 透過 TXLSShapes.AddTextBox 在傳統 XLS 中建立獨立文字方塊 在 BIFF8 繪圖中保留 Excel 建立的 OfficeArt 連接器和求解器規則, 並透過 TXLSShape.OfficeArtOptions 公開原始圖形 FOPT 選項,以供進階繪圖工作流程使用

版面設定與列印

透過 IXLSPageSetup 完整存取列印版面:
  • 紙張大小(A4、Letter、Legal 及多種其他尺寸;請參閱 PaperSize
  • 方向(直向 / 橫向)、邊界、水平 / 垂直置中
  • 含 Excel 格式代碼的頁首和頁尾字串(粗體、斜體、頁碼、日期等; 請參閱 頁首/頁尾格式代碼
  • 手動水平和垂直分頁
  • 縮放至頁數;縮放百分比;列印範圍;列印標題(重複列 / 欄)
  • 草稿品質;黑白列印;列印格線;列印標題;列印備註

匯出格式

將整個活頁簿、個別工作表或任意儲存格範圍匯出為:
  • HTML — 完整文件或內嵌表格片段,用於預覽或電子郵件工作流程; 可透過 TXLSHTMLExportTXLSXHtmlExportOptions 控制
  • RTF — 用於文書處理器匯入的富文字格式
  • CSV — 可設定分隔符號和編碼的逗號分隔值
  • TSV — 定位字元分隔值
  • ODS — 透過 lxHandleX 介面的 OpenDocument Spreadsheet

資料庫與格線匯出

使用 TDataToXLSTGridToXLS 元件, 將任何相容 TDataSet 的資料集或 TDBGrid 直接匯出為 Excel、HTML 或 RTF 兩個元件均觸發 AfterCellAfterRowAfterTitleAfterGroup 事件,以提供精細的輸出控制,並支援多層級群組欄位

VBA 專案保留

HotXLS 在對支援巨集的活頁簿進行往返作業時會保留 VBA 專案內容 可透過 TXLSVBAProjectTXLSVBAModule 進行唯讀模組檢查 呼叫 IXLSWorkbook.HasVBAProject 以偵測內容是否存在, 並呼叫 LoadVBAProjectFromFile / SaveVBAProjectToFile 在檔案之間傳輸

Unicode 與國際化文字

所有字串處理均原生支援 Unicode。HotXLS 可讀寫以任何語言撰寫的 Excel 檔案, 包括 CJK、阿拉伯文、希伯來文、泰文和其他文字,並正確支援雙向文字和閱讀順序
Unicode 字元支援範例

樞紐分析表(傳統 XLS)

使用 TXLSWorksheet.AddPivotTable 從來源範圍建立樞紐分析表, 設定欄位配置和資料欄位數字格式,並透過 TXLSWorksheet.PivotTables 檢查樞紐模型 欄位和篩選詳細資訊請參閱 傳統 XLS 樞紐分析表 API

優勢

No Office dependency 直接在二進位層級讀寫 XLS 和 XLSX 檔案。無需安裝、授權或執行 Microsoft Excel 或 Office 這消除了 COM/OLE 自動化的額外負擔,避免了 Office interop 施加的執行緒限制, 並允許在不適合安裝桌面 Office 的伺服器端和服務情境中使用 HotXLS
High performance BIFF8 和 OOXML 解析器以原生 Object Pascal 撰寫,關鍵路徑不進行中間 XML DOM 配置 含有數十萬列的大型活頁簿可以在較低的記憶體峰值下讀寫 共用字串去重複和共用公式壓縮會自動套用,以縮小檔案大小
OLE migration path 傳統介面的 API 介面(活頁簿、工作表、範圍、字型、框線、內部、版面設定) 緊密對應 OLE Automation 中熟悉的 Excel 物件模型 這使得現有 OLE 專案的移轉變得簡單:將 COM 呼叫替換為 HotXLS 呼叫, 移除 Office 相依性,並獲得原生效能
Dual-facade design 舊版 XLS 程式碼可繼續針對 lxHandle 編譯和執行而無需任何變更, 同時新的 XLSX 程式碼使用功能更豐富的 lxHandleX 介面 一次移轉一種檔案格式既安全又漸進
Formula engine included 內建多道計算引擎可處理最常見的工作表函式,而無需 Excel 在開啟時重新計算 自訂函式透過 OnUserFunction 回呼處理
Easy to use 即插即用的 Delphi 元件(TDataToXLSTGridToXLS)對於常見的匯出工作無需撰寫程式碼 流暢的範圍 API 支援 A1 表示法、R1C1 表示法和以零為基礎的列 / 欄索引
Thread-safe file I/O 由於沒有共用的 Office 處理程序,多個 TXLSXWorkbook 執行個體可在獨立執行緒上並行建立和儲存, 無需同步,使 HotXLS 適用於多執行緒報表產生伺服器

相容性

HotXLS 相容於下列 RAD Studio 版本:
Delphi XE5、XE6、XE7、XE8、10 Seattle、10.1 Berlin、10.2 Tokyo、10.3 Rio、 10.4 Sydney、11 Alexandria、12 Athens、13 Florence
C++Builder XE5、XE6、XE7、XE8、10 Seattle、10.1 Berlin、10.2 Tokyo、10.3 Rio、 10.4 Sydney、11 Alexandria、12 Athens、13 Florence
Target platforms Windows 32 位元和 64 位元
Excel file formats XLS(BIFF8,Excel 97–2003)、XLSX(OOXML,Excel 2007+)、ODS(OpenDocument 1.2)
Export-only formats HTML、RTF、CSV、TSV

另請參閱