HotXLS 文件

傳統 XLS API 其他成員

此頁面涵蓋屬於 lxHandle、lxDataToXLS 和 lxGridToXLS 的公用傳統 XLS API 成員

IXLSWorkbook 計算屬性

property CalculationMode: LongWord;
property FormulaArrayMemoryLimit: Int64;
property EnableIteration: Boolean;
property MaxIterations: LongWord;
property MaxIterationChange: Double;
property RecalcOnSave: Boolean;
property UseFullPrecision: Boolean;
      
CalculationMode 控制隨檔案一起儲存的活頁簿計算模式
FormulaArrayMemoryLimit 限制 MUNIT 這類產生式公式陣列所配置的承載資料大小,預設為 64 MiB,並將低於一個 Double 元素的值收斂到下限
EnableIteration 為循環參照公式啟用迭代計算
MaxIterations 每個循環參照強連通元件的最大 Gauss-Seidel 迭代輪數
MaxIterationChange 循環參照元件停止迭代前可接受的最大數值變化量
RecalcOnSave 要求 Excel 在儲存檔案時重新計算活頁簿
UseFullPrecision 保留完整的公式精度;停用時,公式與模擬分析資料表的快取會先四捨五入到實際顯示的數值精度,再讓相依儲存格讀取

公式輸入驗證

property IXLSWorkbook.FormulaEntryPolicy: TXLSFormulaEntryPolicy;
function TXLSWorksheet.ValidateFormulaEntry(Row, Col: Integer;
  const Formula: WideString): TXLSFormulaEntryValidationResult;
      
這套共用的驗證合約會在不改動工作表狀態的前提下,把空輸入、未知函式、未知名稱、語法失敗、無效座標,以及無法以傳統 XLS 目標表示的公式分門別類;請參閱 公式輸入驗證原則

IXLSWorkbook 轉譯校正

property RenderCalibration: TXLSRenderCalibration;
function CaptureRenderCalibration: TXLSRenderCalibration;
procedure ResetRenderCalibration;
function CreateRenderGeometry(ABackend: TXLSRenderGeometryBackend;
  ACacheCapacity: Integer = 4096): IXLSRenderGeometry;
      
整筆記錄指派會在更動活頁簿之前驗證全部六個欄位;CaptureRenderCalibration 會為單一次測量或匯出作業傳回獨立的值快照;ResetRenderCalibration 則還原成標準的 1/1/1/1/100/96 值
這組僅存在於執行階段的設定不會序列化進 XLS 檔,也不會修改工作表的列高或欄寬
CreateRenderGeometry 會把目前的校正複製到作業自有的服務中,並將其快取識別繫結到目前的活頁簿世代與所選後端;之後再怎麼改活頁簿校正,都動不了既有的服務
範圍 AutoFit 與每一次 TXLSPaginationModel.Build 呼叫都只擷取一次活頁簿校正;AutoFit 是唯一會刻意寫入調整後尺寸的消費端,分頁處理則保留每一筆已儲存的列高與欄寬

IXLSWorkbook 文件屬性

property Title: WideString;
property Subject: WideString;
property Author: WideString;
property Keywords: WideString;
property Comments: WideString;
property Company: WideString;
property Manager: WideString;
      
這些屬性讀取和寫入儲存於傳統 XLS 檔案中的活頁簿摘要資訊欄位

IXLSWorkbook Close 方法

function Close: Integer;
      
關閉活頁簿物件,並釋放傳統 XLS 物件模型持有的活頁簿自有內容

IXLSWorkbook 僅中繼資料載入屬性

property MetadataOnly: Boolean;
property SelectedSheets: TStringList;
property IncompleteLoad: Boolean;
      
MetadataOnly 在 Open 之前設定時,只讀取活頁簿中繼資料與工作表描述項,並跳過儲存格資料
SelectedSheets 開啟活頁簿時要載入的工作表名稱清單;空白清單會載入所有工作表
IncompleteLoad Open 之後,若因為使用了 MetadataOnly 或 SelectedSheets 而跳過儲存格資料,則為 True
以 MetadataOnly 或非空 SelectedSheets 開啟的活頁簿無法儲存;在重新以不帶這些選項的方式開啟之前,Save 都會引發錯誤

TXLSColumnInfo 摺疊狀態

property TXLSWorksheet._ColumnInfo: TXLSColumnInfoList;
property TXLSColumnInfo.Collapsed: Boolean;
property TXLSRowInfo.Collapsed: Boolean;
property TXLSColumnInfoList.Collapsed[Index: Integer]: Boolean;
      
Collapsed 把 BIFF 欄大綱標記獨立於 Hidden 與 OutlineLevel 之外公開。清單索引是以 0 為基數的傳統 XLS 欄索引。缺少的欄讀取為 False,對缺少的欄指派 False 也不會配置中繼資料。欄格式複製、工作表複製,以及存檔後重新開啟的循環,都會保留這個標記
基層的儲存存取子公開為公用成員,供低階的活頁簿檢查使用。TXLSRowInfo 會回報 MinCol 與 MaxCol(涵蓋的 1 為基數欄跨度)、CustomHeight 與 CustomFormat(是否儲存了明確的高度或 XF 索引),以及 XFIndexSet;TXLSColumnInfo.isEqual 則逐欄位比較兩筆欄中繼資料
TXLSColumnInfoList 公開 ColCount、MinCol、MaxCol、StdWidth 與 MaxOutlineLevel,可用於界限與預設欄寬診斷;CalcMaxOutLineLevel 會在直接編輯中繼資料後重算快取的最大大綱層級;CopyColFormat 把一筆欄項目複製到另一個索引;DeleteCol 移除項目;FindNextColToStore 則為 BIFF COLINFO 記錄寫入器走訪已儲存的項目,並透過 MinCol / MaxCol out 參數回報下一個跨度

TXLSWorksheet 大綱節點方法

function TryGetOutlineNode(AAxis: TXLSOutlineAxis; ANodeIndex: Integer; out ANode: TXLSOutlineNode): Boolean;
function SetOutlineNodeCollapsed(AAxis: TXLSOutlineAxis; ANodeIndex: Integer; ACollapsed: Boolean; AChildMode: TXLSOutlineChildMode = xocPreserve): Boolean;
procedure SetOutlineDisplayLevel(AAxis: TXLSOutlineAxis; ADisplayLevel: Integer; AChildMode: TXLSOutlineChildMode = xocPreserve);
      
這些方法把傳統的列與欄中繼資料調整成共用的稀疏大綱模型,從大綱方向推導出所需的摘要節點,並在不探測未使用工作表座標的情況下,套用壓縮過的隱藏與摺疊變更
ANodeIndex 是以 1 為基數的實體摘要列或欄,ADisplayLevel 遵循以 1 為基數的大綱按鈕慣例,而 xocPreserve 預設會讓巢狀子節點的摺疊標記各自獨立
節點欄位、子節點模式、範例與複雜度保證,請參閱 稀疏大綱幾何

TXLSWorksheet 窗格與列印標題方法

function ThawPanes(Y, X: Single; RowTop, ColLeft: Word): Integer;
function SplitPanes(Width, Height: Single): Integer;
function UnsplitPanes: Integer;
function GetSelectedAreas(APane: TXLSPanePosition; out ActiveAreaIndex: Integer): TXLSSelectedAreas;
function SelectAreas(APane: TXLSPanePosition; const Areas: array of WideString; ActiveAreaIndex: Integer = 0): Boolean;
function TryGetWindowScroll(APane: TXLSPanePosition; out ARow, ACol: Integer): Boolean;
function ScrollWindow(APane: TXLSPanePosition; ARow, ACol: Integer): Boolean;
function RepeatRows(FirstRow, LastRow: Word): Integer;
function RepeatColumns(FirstCol, LastCol: Word): Integer;
      
ThawPanes、SplitPanes 和 UnsplitPanes 控制分割窗格狀態,而 RepeatRows 和 RepeatColumns 為工作表設定列印標題列或欄
GetSelectedAreas 與窗格優先的 SelectAreas 多載,提供 工作表窗格選取所述的共用邏輯窗格選取合約
同一窗格連續的 BIFF 選取記錄會構成單一邏輯群組,編輯過的群組以每批最多 1369 個區域的方式寫出,工作表複製則保留每一個窗格群組
整列與整欄的結構編輯會重新對應每個有效的窗格群組,同時保留存續項目的順序與作用中區域的身分,並提供確定性的後繼、前驅與邊界儲存格回退
格式錯誤或自相矛盾的選取記錄維持不透明,存檔時逐位元組重播,並回報 xlsDiagnosticSelectionRecordInvalid,而不會暴露部分可信的有型別狀態
TryGetWindowScroll 與 ScrollWindow 公開共用的 1 為基數四窗格捲動合約,把上軸與左軸對應到 Window2,下軸與右軸對應到 Pane

TXLSWorksheet 有型別資料驗證方法

function AddWholeNumberValidation(ARange: WideString; AOp: TXLSDvOperator; const AFormula1: WideString; const AFormula2: WideString = ''): TDataValidation;
function AddDecimalValidation(ARange: WideString; AOp: TXLSDvOperator; const AFormula1: WideString; const AFormula2: WideString = ''): TDataValidation;
function AddDateValidation(ARange: WideString; AOp: TXLSDvOperator; const AFormula1: WideString; const AFormula2: WideString = ''): TDataValidation;
function AddTimeValidation(ARange: WideString; AOp: TXLSDvOperator; const AFormula1: WideString; const AFormula2: WideString = ''): TDataValidation;
function AddTextLengthValidation(ARange: WideString; AOp: TXLSDvOperator; const AFormula1: WideString; const AFormula2: WideString = ''): TDataValidation;
function AddCustomValidation(ARange: WideString; const AFormula: WideString): TDataValidation;
      
每個輔助程式為 ARange 建立有型別的資料驗證規則,並傳回建立的 TDataValidation 執行個體,以便調整提示、錯誤和空白處理選項

TXLSWorksheet 樞紐分析表成員

property PivotTables: TXLSPivotTables;
function AddPivotTable(const SourceRangeA1: WideString; DestRow, DestCol: Integer; const Name: WideString): TXLSPivotTable;
function PivotSetDataFieldFormat(DataField: TXLSPivotDataField; const FormatStr: WideString): Word;
      
使用 AddPivotTable 從來源範圍建立有型別的樞紐分析表,然後使用 PivotTables 和 PivotSetDataFieldFormat 檢查或格式化產生的模型。請參閱 傳統 XLS 樞紐分析表 API

IXLSRange 陣列公式與範圍界限成員

function SetArrayFormula(const Formula: WideString): Integer;
function XFIndex: Integer;
property FirstRow: Word;
property LastRow: Word;
property FirstCol: Byte;
property LastCol: Byte;
      
SetArrayFormula 為範圍指定陣列公式。FirstRow、LastRow、FirstCol 和 LastCol 公開儲存的 1 為基底範圍界限,而 XFIndex 傳回範圍的有效傳統 XLS 格式索引

IXLSRange 傳輸輔助程式

procedure PasteFrom(SrcRange: TXLSRange; PasteMode: LongWord; CopyMode: Boolean);
procedure ShiftTo(Row: Word; Col: Byte);
procedure ExtendRange;
procedure ContractRange;
      
PasteFrom 使用選定的貼上模式從另一個傳統 XLS 範圍套用儲存格內容。ShiftTo 重新定位範圍物件,而 ExtendRange 和 ContractRange 在需要擴展或正規化界限的範圍作業之前調整儲存的矩形

IXLS 列與欄範圍介面

interface IXLSRowsRange = interface(IXLSRange)
  property Item[Row: Integer]: IXLSRowRange;
  property Hidden: OleVariant;
  property Count: LongWord;
  procedure AutoFit(Columns: Boolean = False);

interface IXLSRowRange = interface(IXLSRange)
  property Item[Col: Integer]: IXLSColRange;
  property Hidden: OleVariant;
  property Count: LongWord;
  procedure AutoFit(Columns: Boolean = False);

interface IXLSColsRange = interface(IXLSRange)
  property Item[Col: Integer]: IXLSColRange;
  property Hidden: OleVariant;
  property Count: LongWord;
  procedure AutoFit(Columns: Boolean = True);
  procedure Group(Rows: Boolean = False);
  procedure UnGroup(Rows: Boolean = False);
  property OutlineLevel: Integer;

interface IXLSColRange = interface(IXLSRange)
  property Item[Row: Integer]: IXLSRowRange;
  property Hidden: OleVariant;
  property Count: LongWord;
  procedure AutoFit(Columns: Boolean = True);
  procedure Group(Rows: Boolean = False);
  procedure UnGroup(Rows: Boolean = False);
  property OutlineLevel: Integer;
      
IXLSRowsRange、IXLSRowRange、IXLSColsRange 和 IXLSColRange 分別由 IXLSRange.Rows、IXLSRange.Columns、IXLSRange.EntireRow 和 IXLSRange.EntireColumn 傳回。它們保留正常的 IXLSRange 編輯介面,同時新增索引列或欄存取、隱藏狀態控制、計數、自動調整大小,以及在範圍方向支援時的大綱群組
property DisplayText: WideString;
      
DisplayText 讀取或變更 Excel 為傳統 XLS 超連結顯示的可見文字,與目標位址和螢幕提示分開

TXLSWorksheets ID 對應屬性

property IndexByID[SheetID: Integer]: Integer;
property IDByName[SheetName: WideString]: Integer;
property NameByID[SheetID: Integer]: WideString;
      
這些唯讀查閱屬性在內部工作表 ID、目前工作表索引和可見工作表名稱之間進行對應。當保留以儲存識別碼(而非目前索引標籤順序)參照工作表的公式、已定義名稱或記錄時,這些屬性非常有用

TXLSWorksheet SheetTypeRaw 屬性

property SheetTypeRaw: Byte;
      
SheetTypeRaw 在載入和儲存活頁簿時保留原始傳統 XLS BoundSheet8.dt 值,以便巨集、VBA、工作表、對話方塊及其他工作表類型記錄可以往返,而不會被扁平化為標準工作表索引標籤

IXLSPageSetup 進階列印屬性

property PrintNotesAtEnd: Boolean;
property UseFirstPageNumber: Boolean;
property FirstPageNumber: Integer;
property PrintCellErrors: LongWord;
property PrintResolution: LongWord;
property PrintVResolution: LongWord;
property Copies: LongWord;
property HasSetupRecord: Boolean; read only
property PrinterSettingsInitialized: Boolean; read only
property PrinterDriverData: TBytes;
property HasPrinterDriverData: Boolean; read only
procedure ClearPrinterDriverData;
      
這些屬性保留進階版面設定選項,例如在結尾列印的批註、自訂起始頁碼、列印儲存格錯誤的轉譯方式、印表機解析度和份數
HasSetupRecord 回報載入的傳統 XLS 工作表是否含有 BIFF Setup 記錄;PrinterSettingsInitialized 則回報紙張大小、縮放、方向、解析度與份數是否由該記錄定義
儲存未修改的工作表時,缺少的 Setup 記錄維持缺少、既有記錄則逐位元組保留;變更版面設定欄位會在需要時建立記錄,變更與印表機相關的欄位則會初始化印表機設定
PrinterDriverData 讀取或取代不透明的 BIFF PLS 印表機驅動程式承載資料,HasPrinterDriverData 用來區分承載資料是否存在,ClearPrinterDriverData 則在不變更有型別版面設定欄位的情況下把它移除
getter 與 setter 的位元組陣列都會複製,因此呼叫端與工作表副本各自擁有獨立的所有權;Classic 承載資料必須包含必要的兩位元組保留前綴,且不得超過 1 MiB
SaveXLSWorkbookAsXLSX 會把有型別的版面設定值與不透明的印表機驅動程式承載資料,各自獨立地帶進 XLSX 模型;當私用驅動程式位元組裡含有重複的印表機預設值時,仍以有型別的標準欄位為準

IXLSFont 字元集屬性

property CharSet: Byte;
property Family: Byte;
      
CharSet 和 Family 公開傳統 XLS 字型字元集和系列位元組,供需要保留地區特定字型中繼資料的呼叫端使用

TDataToXLS 與 TGridToXLS Abort 方法

procedure TDataToXLS.Abort;
procedure TGridToXLS.Abort;
      
當執行中的資料集或格線匯出必須在完成之前停止時,從匯出事件處理常式呼叫 Abort

傳統 XLS 參考輔助函式

function GetCellRef(Cell: String; var Row, Col: Word): Integer;
function GetCellRange(CellRange: String; var StartRow, StartCol, EndRow, EndCol: Word): Integer;
function EncodeCellRef(Row, Col: Word): String;
function EncodeCellRange(StartRow, StartCol, EndRow, EndCol: Word): String;
function Width2Excel(Value: Single): Word;
function Excel2Width(Value: Word): Single;
function Height2Excel(Value: Single): Word;
function Excel2Height(Value: Word): Single;
function ColIndexToColName(Index: Integer): String;
function ColNameToColIndex(Name: String): Integer;
      
這些輔助程式轉換傳統 XLS 物件模型使用的傳統 A1 參照、範圍、欄標籤、列或欄尺寸及 Excel 儲存單位