HotXLS 文件

TXLSXWorkbook 類別

Excel 2007+(.xlsx)活頁簿的最上層容器,宣告於 lxHandleX。內含一個 TXLSXSheets 集合,並為 OOXML 活頁簿、CSV / TSV 匯入,以及 OpenDocument Spreadsheet ( SaveAs )讀寫流程提供 Open /.ods進入點

宣告

type
  TXLSXFileFormat = (xlsxOpenXMLWorkbook, xlsxOpenDocumentSpreadsheet,
    xlsxOpenXMLTemplate, xlsxOpenXMLMacroEnabledTemplate, xlsxExcelBinaryWorkbook);

  TODSExportOptions = class
    constructor Create;
    property Generator: WideString;
    property IncludeCharts: Boolean;
    property IncludeImages: Boolean;
  end;

  TXLSXWorkbook = class
    constructor Create;
    destructor Destroy; override;
    function CreateLoadedCellCursor: IXLSLoadedCellCursor; overload;
    function CreateLoadedCellCursor(AIncludeStoredBlanks: Boolean): IXLSLoadedCellCursor; overload;
    function CreateReadOnlyView: IXLSReadOnlyWorkbookView;
    property RenderCalibration: TXLSRenderCalibration;
    function CaptureRenderCalibration: TXLSRenderCalibration;
    procedure ResetRenderCalibration;
    function CreateRenderGeometry(ABackend: TXLSRenderGeometryBackend;
      ACacheCapacity: Integer = 4096): IXLSRenderGeometry;
    function SaveAs(const FileName: WideString): Integer; overload;
    function SaveAs(const FileName: WideString; FileFormat: TXLSXFileFormat): Integer; overload;
    function SaveAs(Stream: TStream): Integer; overload;
    function SaveAs(Stream: TStream; FileFormat: TXLSXFileFormat): Integer; overload;
    function GetConversionReport(ATarget: TXLSConversionTarget): TXLSConversionReport;
    function SaveAsChecked(Stream: TStream; FileFormat: TXLSXFileFormat;
      AllowLossy: Boolean = False): Integer; overload;
    function SaveAsChecked(const FileName: WideString; FileFormat: TXLSXFileFormat;
      AllowLossy: Boolean = False): Integer; overload;
    function Open(const FileName: WideString): Integer; overload;
    function Open(const FileName: WideString; const Password: WideString): Integer; overload;
    function Open(Stream: TStream): Integer; overload;
    function OpenCSV(const FileName: WideString): Integer; overload;
    function OpenCSV(const FileName: WideString; ASeparator: WideChar;
      ADetectTypes: Boolean): Integer; overload;
    function OpenCSV(Stream: TStream): Integer; overload;
    function OpenCSV(Stream: TStream; ASeparator: WideChar;
      ADetectTypes: Boolean): Integer; overload;
    function OpenODS(const FileName: WideString): Integer; overload;
    function OpenODS(Stream: TStream): Integer; overload;
    function SaveAsODS(const FileName: WideString): Integer; overload;
    function SaveAsODS(Stream: TStream): Integer; overload;
    function SaveAsODS(const FileName: WideString; Options: TODSExportOptions): Integer; overload;
    function SaveAsODS(Stream: TStream; Options: TODSExportOptions): Integer; overload;
    function GetODSSheetNames(const FileName: WideString; AList: TStrings): Integer; overload;
    function GetODSSheetNames(Stream: TStream; AList: TStrings): Integer; overload;
    function GetSheetNames(const FileName: WideString; AList: TStrings): Integer; overload;
    function GetSheetNames(Stream: TStream; AList: TStrings): Integer; overload;
    function SaveAsCSV(const FileName: WideString): Integer; overload;
    function SaveAsCSV(const FileName: WideString; SheetIndex: Integer; Delimiter: WideChar): Integer; overload;
    function SaveAsCSV(Stream: TStream): Integer; overload;
    function SaveAsCSV(Stream: TStream; SheetIndex: Integer; Delimiter: WideChar): Integer; overload;
    function SaveAsHTML(const FileName: WideString): Integer; overload;
    function SaveAsHTML(const FileName: WideString; Options: TXLSXHtmlExportOptions): Integer; overload;
    function SaveAsHTML(const FileName: WideString; SheetIndex: Integer): Integer; overload;
    function SaveAsHTML(const FileName: WideString; SheetIndex: Integer; Options: TXLSXHtmlExportOptions): Integer; overload;
    function SaveAsHTML(Stream: TStream): Integer; overload;
    function SaveAsHTML(Stream: TStream; Options: TXLSXHtmlExportOptions): Integer; overload;
    function SaveAsHTML(Stream: TStream; SheetIndex: Integer): Integer; overload;
    function SaveAsHTML(Stream: TStream; SheetIndex: Integer; Options: TXLSXHtmlExportOptions): Integer; overload;
    function SaveAsRTF(const FileName: WideString): Integer; overload;
    function SaveAsRTF(const FileName: WideString; SheetIndex: Integer): Integer; overload;
    function SaveAsRTF(Stream: TStream): Integer; overload;
    function SaveAsRTF(Stream: TStream; SheetIndex: Integer): Integer; overload;
    // AES encryption (ECMA-376 Standard Encryption) write path.
    // OpenEncrypted still raises for encrypted packages.
    function SaveAsEncrypted(const FileName, APassword: WideString): Integer;
    function OpenEncrypted(const FileName, APassword: WideString): Integer;
    function CanReadEncrypted(const FileName: WideString): Boolean;
    function Calculate(const Formula: WideString): Variant;
    function CalculateAndVerify: Integer; overload;
    function CalculateAndVerify(out AMismatches: TArray<TXLSVerifyMismatch>): Integer; overload;
    property OnUserFunction: TXLSUserFunctionEvent;
    property OnUserFunctionEx: TXLSUserFunctionExEvent;
    property AllowUnsafeFormulaCallbacks: Boolean;
    // Document properties (docProps/core.xml + docProps/app.xml).
    property Title, Author, Subject, Keywords, Description,
             Category, LastModifiedBy, Company,
             Application, AppVersion: WideString;
    property Created, Modified: TDateTime;
    // Workbook protection (16-bit legacy hash).
    procedure ProtectWorkbook; overload;
    procedure ProtectWorkbook(const APassword: WideString); overload;
    procedure ProtectWorkbook(const APassword: WideString; ALockStructure, ALockWindows: Boolean); overload;
    procedure UnProtectWorkbook;
    property IsWorkbookProtected: Boolean;
    property LockStructure, LockWindows: Boolean;
    // VBA project payload (round-trips byte-for-byte). Workbook is saved
    // with macro-enabled content type when HasVbaProject is True.
    procedure LoadVbaProjectFromFile(const AFileName: WideString);
    procedure ClearVbaProject;
    function HasVbaProject: Boolean;
    property VbaProjectDefined: Boolean;
    property VbaProject: AnsiString;
    property ParsedVBAProject: TXLSVBAProject;
    // Unknown package and workbook extension preservation
    procedure ClearUnsupportedParts;
    function UnsupportedPartCount: Integer;
    function UnsupportedPartBytes: Int64;
    property PreserveUnsupportedParts: Boolean;
    // Chart sheet helper — creates a sheet flagged IsChartSheet and
    // seeds Charts[0] with a default full-page anchor.
    function AddChartSheet(const AName: WideString;
      AChartType: TXLSXChartType; const ATitle: WideString): TXLSXWorksheet;
    // Streaming SaveAs path (TXLSWideStringBuilder + one sheet at a time).
    property StreamingWrite: Boolean;
    // Streaming parallel Open path
    property ParallelParse: Boolean;
    property ParallelParseThreads: Integer;
    // Workbook-level collections.
    property ActiveSheet: Integer;
    property Minimized: Boolean;
    property WindowHidden: Boolean;
    property ShowHorizontalScroll: Boolean;
    property ShowVerticalScroll: Boolean;
    property ShowSheetTabs: Boolean;
    property XWindow: Integer;
    property YWindow: Integer;
    property WindowWidth: Integer;
    property WindowHeight: Integer;
    property TabRatio: Integer;
    property FirstSheet: Integer;
    property AutoFilterDateGrouping: Boolean;
    property Date1904: Boolean;
    // Workbook calculation policy
    property Iterate: Boolean;
    property IterateCount: Integer;
    property IterateDelta: Double;
    property CalcId: Integer;
    property FullCalcOnLoad: Boolean;
    property CalcMode: WideString;
    property RefMode: WideString;
    property ForceFullCalc: Boolean;
    property CalcCompleted: Boolean;
    property CalcOnSave: Boolean;
    property FullPrecision: Boolean;
    property ConcurrentCalc: Boolean;
    property ConcurrentManualCount: Integer;
    function CreateWorkspaceWorkbook: IXLSWorkspaceWorkbook;
    procedure RegisterExternalWorkbook(const AWorkbookName: WideString;
      AWorkbook: TXLSXWorkbook);
    procedure UnregisterExternalWorkbook(const AWorkbookName: WideString);
    property SourceFormat: TXLSXFileFormat;
    property IndexedColor[Index: Integer]: LongWord;
    function  NearestIndexedColor(AArgb: LongWord;
      out AMatch: TXLSNearestIndexedColorMatch): Boolean;
    function  ScanIndexedColorUsage: TXLSIndexedColorUsageArray;
    function  BuildBiffPalettePlan: TXLSBiffPalettePlan;
    function  ApplyBiffPalettePlan(
      const APlan: TXLSBiffPalettePlan): Boolean;
    function  HasCustomIndexedColor(Index: Integer): Boolean;
    function  CustomIndexedColorCount: Integer;
    procedure ResetIndexedColors;
    property Sheets: TXLSXSheets;
    property Fonts: TXLSXFonts;
    property Fills: TXLSXFills;
    property Borders: TXLSXBorders;
    property NumberFormats: TXLSXNumberFormats;
    property Alignments: TXLSXAlignments;
    property DefinedNames: TXLSXDefinedNames;
    property ExternalLinks: TXLSXExternalLinks;
    property ExternalWorkspace: TXLSWorkbookWorkspace;
  end;
      

成員

Sheets工作表集合。請參閱 TXLSXSheets
Fonts活頁簿層級的字型色盤。儲存格把 TXLSXCell.FontIndex 設成這個集合裡 1 起始的索引,就能選用字型。請參閱 TXLSXFont / TXLSXFonts
Fills活頁簿層級的填滿色盤。儲存格把 TXLSXCell.FillIndex 設成這個集合裡 1 起始的索引,就能選用填滿。請參閱 TXLSXFill / TXLSXFills
Borders活頁簿層級的框線色盤。儲存格把 TXLSXCell.BorderIndex 設成這個集合裡 1 起始的索引,就能選用框線。請參閱 TXLSXBorder / TXLSXBorders
NumberFormats活頁簿層級的自訂數值格式色盤。儲存格把 TXLSXCell.NumberFormatIndex 設成 這個集合裡 1 起始的索引,就能選用格式。請參閱 TXLSXNumberFormat / TXLSXNumberFormats
DefinedNames活頁簿層級的定義名稱(活頁簿範圍或工作表範圍皆可)。請參閱 TXLSXDefinedName / TXLSXDefinedNames
Calculate針對作用中的工作表編譯並求值 Excel 公式字串,接受前導 = 儲存格參照、範圍、被參照儲存格內保存的公式、跨工作表參照、巢狀公式型定義名稱、帶逐格錯誤的廣播陣列、多變數迴歸與預測陣列,以及支援的文字、日期、工作日、工程/進位制轉換、位元運算、統計、聚合與數學函式,都交由共用的 HotXLS 公式引擎求值 自訂或不支援的函式請透過 OnUserFunction 處理
CreateLoadedCellCursor建立一個常數狀態、以列為主的游標,走訪已儲存的 XLSX 值與公式;另有多載可把獨立設定格式的空白儲存格一併以 xlckBlank送出。走訪稀疏區塊與壓縮儲存時,不需要先把壓縮表示展開。請參閱 CreateLoadedCellCursor 方法
CreateReadOnlyView建立在共用模型上的常數時間檢視,具備本機作用中工作表、傳值快照、快取的公式結果、可選用的隔離公式求值、直接的壓縮儲存格讀取、透過 IXLSXWorkbookOwner的參照計數生命週期,以及快速失敗的寫入互斥; IXLSReadOnlyWorkbookView 也會回報 SheetCount ,方便只想列舉工作表、不碰活頁簿模型的呼叫端。請參閱 CreateReadOnlyView 方法
SaveSemanticSnapshot, ComputeSemanticHash以串流方式輸出帶版本號的活頁簿語意標準表示,或在不完整具體化快照的前提下計算其小寫 SHA-256。請參閱 語意快照與雜湊方法
RenderCalibration, CaptureRenderCalibration, ResetRenderCalibration以原子方式指派通過驗證的算繪校正、為單一操作擷取獨立的數值快照,或還原預設值;執行期設定不會被序列化,也不會自行調整工作表列欄尺寸。請參閱 算繪校正值與快照
CreateRenderGeometry建立由操作持有的幾何與字型度量服務,具備不可變校正、活頁簿世代與後端識別,以及有界的本機快取;AutoFit 每個操作擷取一個服務,分頁每次建置擷取一個,過程不寫入工作表尺寸。請參閱 算繪幾何與字型度量
OnUserFunction, OnUserFunctionEx當公式呼叫自訂或不支援的函式時, Calculate 會透過這個 callback 處理。請參閱 OnUserFunction / OnUserFunctionEx callback
AllowUnsafeFormulaCallbacks預設為 false,避免危險的外部或巨集風格函式名稱在引數求值前就進到 user-function 處理器。請參閱 callback 安全政策
GetSheetNames(FileName, AList), GetSheetNames(Stream, AList)讀取 xl/workbook.xml ,按活頁簿順序把工作表名稱附加到 AList ,過程中不載入工作表 XML。串流多載需要完整的 XLSX 套件串流。回傳讀到的名稱數,套件無法開啟時回傳 -1 when the package cannot be opened
Alignments活頁簿層級的儲存格對齊色盤。儲存格把 TXLSXCell.AlignmentIndex 設成這個集合裡 1 起始的索引,就能選用對應項目。請參閱 TXLSXAlignment
Document propertiesTitle、Author、Subject、Keywords、Description、 Category、LastModifiedBy、Company、Application、AppVersion、 Created、Modified。設定其中任何一項,SaveAs 就會寫入 docProps/core.xml 加 docProps/app.xml (否則活頁簿只保留最小的 part 集合)
ProtectWorkbook / UnProtectWorkbook活頁簿保護開關,可帶選用的 16 位元舊式密碼雜湊與 LockStructure / LockWindows 旗標。反映為 xl/workbook.xml 裡的 <workbookProtection> in xl/workbook.xml
LoadVbaProjectFromFile / VbaProject / HasVbaProject / VbaProjectDefinedLoadVbaProjectFromFile 匯入原始 vbaProject.bin 承載; VbaProject 暴露這些位元組; HasVbaProject 與唯讀的 VbaProjectDefined 都會回報承載是否存在。若要讓 Excel 啟用巨集,請以 .xlsm 副檔名儲存
ParsedVBAProject目前 vbaProject.bin 承載的唯讀解析檢視。承載是合法的 OLE VBA 儲存時,回傳一個暴露模組名稱與原始程式碼文字的 TXLSVBAProject ;否則回傳 nil。SaveAs/Open 往返保留時,仍以原始 VbaProject 承載的位元組為準
AddChartSheet(Name, Type, Title)建立一個標記 IsChartSheet = True 的工作表,並為 Charts[0] 塞入合理的預設全頁錨點。SaveAs 會把這類工作表 寫到 xl/chartsheets/sheetN.xml。請參閱 TXLSXChart
ParallelParse設為 True 時,多工作表的 Open 會把工作表 ZIP 條目 直接串流進各 worker 自己的 inflater 與 XML reader。過程中不保留展開後的工作表 XML 暫存副本,套件來源也只在每次定位讀取時鎖定。設為 False 則一次只解析一張工作表。預設為 True
ParallelParseThreads設定 Open期間同時解析的工作表串流數上限。 0 代表自動決定 worker 數,正值則是明確上限。作用中的 inflater 與 XML reader 工作集都以這個數字為界
StreamingWrite設為 True 時,SaveAs 對每張工作表改用 WriteWorksheetXmlStreaming —— 不保留 sheetXmls 快取,等每張工作表都填完 SST 之後,才最後輸出 sharedStrings.xml。搭配逐列的 TXLSWideStringBuilder ,大型工作表的記憶體用量可保持線性。預設為 False(既有行為)
PreserveUnsupportedParts / ClearUnsupportedPartsPreserveUnsupportedParts 預設為 True,在 Open 與 SaveAs 期間保留未知的關聯可達套件 part、 外來的活頁簿根命名空間宣告、標記相容性 屬性,以及完整的活頁簿層級 <extLst> 承載。保留的擴充承載內的關聯參照,在產生的 ID 與 來源衝突時會重新對應。想在 Open 前丟掉這些狀態,可把屬性設為 False,或呼叫 ClearUnsupportedParts。 UnsupportedPartCount 與 UnsupportedPartBytes 診斷資訊統計的是被保留的套件 part,不含內嵌的 活頁簿 XML 中繼資料
PreserveRawParts預設為 True,讓以檔案為來源的 SaveAs 開啟一份驗證過的私人來源封存,然後原樣複製 主題、VBA、連線、外部連結、圖片、圖表、 樞紐,以及其他關聯可達的不透明條目,保留它們原始的 壓縮承載。成功的檔案儲存會為後續儲存建立新的乾淨 基準。串流來源的活頁簿、來源檔已變更、承載被編輯過、不支援的壓縮方法,以及無效的 壓縮大小,則退回交易式序列化或直接拒絕
SaveAsEncrypted / OpenEncrypted / CanReadEncryptedECMA-376 Standard Encryption 寫入支援 SaveAsEncrypted 會為非空密碼寫出符合標準的 AES-128 保護 OLE Compound File 容器,有 AES-NI 加速時就用硬體, 否則退回可攜的軟體實作。加密輸出可用儲存時的 密碼在 Excel 2007 及之後版本開啟。 CanReadEncrypted 認 OLE2 magic bytes; OpenEncrypted 對未加密檔案會透明退回普通 Open ,遇到加密套件在解密支援就位前 仍會丟出 EXlsxEncryptionNotImplemented for encrypted packages until decrypt support lands
SaveAs(FileName)把活頁簿寫入指定檔案。成功回傳 1 ,失敗回傳負值。活頁簿沒有任何工作表時,寫入前會先補上一張預設的 Sheet1 is added before writing
此多載與 SaveAs(FileName, FileFormat) 會先暫存輸出,再取代目的地 若取代失敗,回傳值為 -1 , LastDiagnostic 會回報 xlsDiagnosticOutputCommitFailed (1005)、原始 Windows NativeCode與系統錯誤訊息 舊目的地與活頁簿 FileName 保持不變;暫存輸出會被釋放,之後的儲存會清除前一次的診斷
SaveAs(FileName, FileFormat)接受 xlsxOpenXMLWorkbook 輸出一般 OOXML、 xlsxOpenDocumentSpreadsheet 輸出 ODS、 xlsxOpenXMLTemplate 輸出不含巨集的 XLTX 範本,或 xlsxOpenXMLMacroEnabledTemplate 輸出 XLTM 範本;所有 OOXML 選擇都支援緩衝與串流輸出
範本輸出會為 application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml 寫入 /xl/workbook.xml;檔案請使用 .xltx 副檔名,透過 HTTP 提供套件時請使用 application/vnd.openxmlformats-officedocument.spreadsheetml.template when serving the package over HTTP
格式必須明確指定:副檔名與匯入的範本都不會改變預設的 SaveAs 輸出
若存在 VBA 專案,XLTX 輸出會在寫入目的地前回傳 -1 並附上不支援格式的診斷; XLTM 會保留既有的 VBA 專案,也接受不含巨集的活頁簿
SaveAsODS 仍是 ODS 輸出的具名捷徑,並可選用 TODSExportOptions 控制
GetConversionReport / SaveAsChecked檢查呼叫端自有、不變更模型的已知功能轉換報告,或以 AllowLossy=False 在寫入前拒絕降級與丟棄的功能 明確的損失性儲存仍會拒絕不受支援的轉換;目標、所有權、診斷與保留界限請見計算與轉換保真度
SaveAs(Stream) / SaveAs(Stream, FileFormat)把活頁簿直接寫進任意 TStream , FileFormat 多載接受 xlsxOpenXMLWorkbook、 xlsxOpenDocumentSpreadsheet、 xlsxOpenXMLTemplate或 xlsxOpenXMLMacroEnabledTemplate,分別用於記憶體內的 OOXML 活頁簿、ODS 試算表、XLTX 範本或 XLTM 範本
成功回傳 1 ,串流儲存會遵循 RecalcBeforeSave:手動模式保留既有的公式快取,dirty 與 always 原則則在序列化前重新整理
串流的所有權仍歸呼叫端;開始寫入前取消會保留串流內容與位置,序列化開始後才失敗則可能留下部分輸出
Open(FileName)讀取 OOXML .xlsx 封存,並以檔案內容取代 Sheets 集合。成功回傳 1 on success
Open(FileName, Password)保留給未來的加密 XLSX 支援。目前的行為 同 Open(FileName) — 密碼會被忽略
Open(Stream)從 TStream讀取 OOXML .xlsx 封存。成功回傳 1 on success
OpenCSV(FileName) / OpenCSV(Stream)把 CSV 或 TSV 文字匯入活頁簿,自動偵測分隔符(,、 ;、 Tab 或管線符號)、依 BOM 偵測 UTF-8 / UTF-16 編碼、支援 RFC 4180 風格的引號欄位,並可透過 ADetectTypes 多載選擇性推斷值型別。對 Open(FileName) 或 .csv 呼叫 .tsv 會自動改走這個匯入器。請參閱 OpenCSV 方法
OpenODS(FileName) / OpenODS(Stream)從檔案或串流匯入 OpenDocument Spreadsheet(.ods)套件。讀取器會載入 content.xml、 styles.xml的共用樣式資訊,以及(若存在)檢視設定,保留工作表名稱、純量值、快取的公式結果、基本的公式參照轉換、重複的列/欄/儲存格、合併範圍、富文字、超連結、註解、內嵌圖片、內嵌圖表、隱藏列/欄/工作表、列高、欄寬、繼承/預設樣式、數值/日期/時間/貨幣/科學/分數格式、儲存格與工作表保護狀態、定義名稱、列印範圍、手動分頁、凍結窗格、AutoFilter 範圍、列/欄大綱群組、頁首/頁尾、資料驗證(含提示訊息)、條件格式(含公式/色階/資料橫條),以及工作表索引標籤色彩。完整的 OpenFormula 語意、ODS 保護金鑰、註解幾何、進階註解格式,以及試算表內容以外的套件功能則不轉換
SaveAsODS(FileName) / SaveAsODS(Stream), with optional TODSExportOptions把活頁簿儲存為合法的 OpenDocument Spreadsheet 套件。直接寫出 ODF mimetype、manifest、中繼資料、樣式與工作表內容,凡是 HotXLS 活頁簿模型有表示的功能,都會一併帶上具型別值、公式、樣式、富文字、尺寸、合併、超連結、圖片、圖表、定義名稱、AutoFilter 範圍、條件格式、資料驗證、凍結窗格、版面設定、頁首/頁尾、列印範圍、手動分頁、大綱群組、索引標籤色彩與工作表可見性。傳入匯出選項(包括 nil)會保留正常的重新計算原則、進度取消、診斷與寫入保護。檔案輸出會先寫到旁邊的暫存檔,序列化成功後才取代目的地;序列化失敗或在提交前取消,都會保留原本的目的地。寫入進度會回報每張完成的表格,ppsEnd 是終止通知,其 Abort 要求無法取消已經完成的儲存。串流輸出保留呼叫端所有權與一般的串流儲存行為,序列化開始後可能留下部分輸出
TODSExportOptions控制 ODS 匯出。 Generator 可覆寫 meta:generator 裡的 meta.xml值;留空則使用內建的 HotXLS 產生器字串。 IncludeCharts 與 IncludeImages 預設為 True,設為 False 時會把對應的繪圖框架、套件 part 與 manifest 條目一起移除,輸出中不會留下孤立的圖表或圖片參照。options 執行個體由呼叫端持有,用完必須釋放
GetODSSheetNames(FileName, AList), GetODSSheetNames(Stream, AList)只從 content.xml 讀出 ODS 表格名稱放進 AList ,不重置也不填入活頁簿。適合檔案選擇器或匯入流程在載入活頁簿之前,先取得工作表名稱的場景
SaveAsCSV overloads四個多載(FileName 或 Stream × 預設作用中工作表 / 指定 SheetIndex + Delimiter)。把所選工作表 寫成帶 BOM 的 UTF-8 CSV。日期值輸出為 yyyy-mm-dd hh:nn:ss;公式儲存格會先計算再 匯出,只有計算不可用時才退回公式文字 成功回傳 0
SaveAsHTML overloads帶 options 的多載接受 TXLSXHtmlExportOptions ,可設定 Title、 WriteDocument、 IncludeStyles、 IncludeBOM與 TableClass。要輸出純表格片段就把 WriteDocument 設為 False ;要把輸出嵌進既有的 UTF-8 回應,就把 IncludeBOM 設為 False 。匯出輸出會把儲存格超連結保留為 <a> 錨點,並把錨定圖片保留為內嵌 data: 圖片 URI;活頁簿層級匯出涵蓋落在已填儲存格之外的錨點。儲存格註解也會以轉義的 <td>title 屬性輸出,活頁簿層級匯出也包含只有註解的錨點。啟用 IncludeStyles 時,明確的 ColWidth 值會輸出為 <col> 寬度、明確的 RowHeight 值會輸出為 <tr> 高度樣式。啟用 <span> 時,富文字儲存格的各個 run 會輸出為帶內嵌字型、色彩、粗斜體與底線樣式的轉義 IncludeStyles 元素。啟用 border-left時,儲存格框線會輸出為 CSS border-right、 border-top、 border-bottom 與 IncludeStyles 規則。由 RowHidden / ColHidden標記的隱藏列欄,加上明確的零寬度欄,都不會出現在產生的表格與 <colgroup>裡。啟用 vertical-align 時,垂直對齊設定會輸出為 CSS IncludeStyles 規則
SaveAsRTF overloads四個多載(FileName 或 Stream × 預設作用中工作表 / 指定 SheetIndex)。把所選工作表 寫成帶普通表格的 RTF 1.6 文件。欄寬由 ColWidth 資料推導 (1 字元單位 ≈ 96 twips; 預設 809 twips)。會套用每個儲存格的粗體 / 斜體 / 字型大小; 非 ASCII 字元編碼為帶正負號 16 位元的 \uN? RTF unicode 轉義。合併儲存格不做跨欄展開。成功回傳 0
ActiveSheet作用中(已選取)工作表的 1 起始索引(沒有時為 0),與傳統 XLS 引擎的 ActiveSheetIndex一致。需要輸出活頁簿檢視選項時, SaveAs 會在 activeTab="N" 上寫 <workbookView> (OOXML 的 activeTab 屬性本身仍是 0 起始),並在對應工作表上標記 tabSelected="1"
Minimized / WindowHidden / ShowHorizontalScroll / ShowVerticalScroll寫入 <workbookView>的活頁簿視窗外框旗標。 Minimized 寫 minimized="1", WindowHidden 寫 visibility="hidden", ShowHorizontalScroll / ShowVerticalScroll 控制活頁簿捲軸的顯示與隱藏。 Open 對這四個值都做往返保留
XWindow / YWindow / WindowWidth / WindowHeight寫入 <workbookView>的活頁簿視窗幾何。 XWindow 與 YWindow 保存視窗原點, WindowWidth 與 WindowHeight 保存視窗大小。數值限制在 0..65535,載入時往返保留
ShowSheetTabs / TabRatio / FirstSheet / AutoFilterDateGrouping寫入 <workbookView>的活頁簿視窗檢視選項。 ShowSheetTabs 顯示或隱藏工作表索引標籤列, TabRatio 控制索引標籤列與捲軸的寬度分配並限制在 0..1000, FirstSheet 以 0 起始的工作表索引選取第一個可見索引標籤並限制在既有工作表內, AutoFilterDateGrouping 控制 AutoFilter 下拉選單中 Excel 的日期分組。 Open 對這四個值都做往返保留
Date1904活頁簿的日期基準。 False (預設)= Windows 1900 紀元; True = Mac 1904 紀元(每個日期 序號都位移 1462 天)。指定 儲存格值 之前 TDateTime 就要設好,Excel 才會顯示同一個 日曆日期
Iterate / IterateCount / IterateDelta控制循環參照的迭代計算 IterateCount 限制在 1..32767,預設 100 IterateDelta 接受非負的有限值, 預設 0.001 即使 Iterate 當下是 False
CalcMode / RefMode / CalcId控制活頁簿計算模式、公式 參照樣式與計算引擎識別 CalcMode 接受 auto、 manual或 autoNoTableRefMode 接受 A1 或 R1C1 , 輸入不分大小寫,輸出為標準形式 現代 rich-error 輸出會把輸出的 CalcId 提升到至少 191029 ,讓 Excel 正確解讀快取的現代錯誤;保留更高的要求值, 記憶體內屬性則維持不變
FullCalcOnLoad / ForceFullCalc / CalcCompleted / CalcOnSave / FullPrecision控制完整重算、快取計算 完成標記、存檔前重算與精度政策 每個非預設值都會各自輸出並往返保留 對應的 <calcPr> 屬性
ConcurrentCalc / ConcurrentManualCount控制活頁簿的並行計算與 手動 worker 數提示 ConcurrentManualCount 限制為 0 以上
SourceFormat回報最近一次成功的 Open 或 OpenODS 載入的套件家族,OOXML 活頁簿與範本(包括 XLTX 與 XLTM)回傳 xlsxOpenXMLWorkbook ,ODS 回傳 xlsxOpenDocumentSpreadsheet ,受支援的 XLSB 值與樣式子集則回傳 xlsxExcelBinaryWorkbook
新建立的活頁簿在開啟檔案前回報 xlsxOpenXMLWorkbook ,此屬性不會選擇輸出格式
IndexedColor[Index]指定 OOXML 索引色色盤 槽位(0..63)的 ARGB 值。讀取時有使用者覆寫就回傳覆寫值,否則回傳 內建 OOXML 預設值(XlsxDefaultIndexedPalette) 寫入會覆寫槽位 N;SaveAs 隨後輸出 含全部 64 個槽位的完整 <indexedColors> 區塊
ResolveIndexedColor分類公開色彩索引、BIFF icv 值或 OOXML 索引色,並在活頁簿色盤或明確的系統色彩 callback 提供來源時,解析出正規化的 ARGB 值
NearestIndexedColor透過共用的快取 OKLab 比對器回傳最接近的實體色盤條目,不改動色盤或活頁簿狀態
ScanIndexedColorUsage回傳確定性的 56 槽位盤點,包含色盤色彩、定義與參照計數、使用端種類與保留鎖,不具體化儲存格也不改變活頁簿狀態
BuildBiffPalettePlan回傳無副作用的 56 槽位 BIFF 色盤計畫,含鎖定槽位、聚合後的全彩目標、確定性映射、來源識別與加權 OKLab 誤差統計
ApplyBiffPalettePlan先驗證來源識別、槽位中繼資料、鎖定與不透明目標,再以原子方式套用所有變更的色盤條目,並重建一次快取比對器
HasCustomIndexedColor / CustomIndexedColorCount / ResetIndexedColorsHasCustomIndexedColor(N) 槽位 N 被明確覆寫時, True 回傳 CustomIndexedColorCount 回傳被覆寫的 槽位數(0 代表 SaveAs 不輸出 <colors> 區塊) ResetIndexedColors 丟棄所有覆寫並還原 預設色盤
ExternalLinks外部活頁簿參照的集合。每個 TXLSXExternalLink 清單。SaveAs 在 SheetNames 輸出 <externalReferences> 區塊與對應的 xl/workbook.xml part。 xl/externalLinks/ 會往返保留 Target 與 SheetNames; <sheetDataSet> 內快取的儲存格值不予保留
CreateWorkspaceWorkbook回傳這個活頁簿可撤銷的 IXLSWorkspaceWorkbook 轉接器。轉接器保留活頁簿的來源識別與世代,並在活頁簿模型摧毀前斷線
ExternalWorkspace執行緒安全、保留路徑的登錄,供即時外部公式求值使用。精確識別與別名優先,模糊的基底名稱查詢會被拒絕,識別正規化過程不做任何隱含的檔案或網路存取。請參閱 即時活頁簿工作區
RegisterExternalWorkbook / UnregisterExternalWorkbookCompatibility facade over ExternalWorkspace 的相容性門面。註冊會把明確提供的名稱映射到活頁簿保存的關聯目標,路徑與副檔名各自獨立,名稱衝突則拒絕。解除註冊會移除指定的註冊;目標摧毀時也會安全地撤銷轉接器

範例

寫入並重新開啟活頁簿:
uses lxHandleX;

var
  wb: TXLSXWorkbook;
begin
  wb := TXLSXWorkbook.Create;
  try
    wb.Sheets.Add('Demo').Cells.Item[1, 1].Value := 'Hello';
    wb.SaveAs('demo.xlsx');

    wb.Open('demo.xlsx');
    ShowMessage(wb.Sheets[0].Cells.Item[1, 1].Value);
  finally
    wb.Free;
  end;
end;
    

另請參閱