HotXLS 文件

CreateLoadedCellCursor 方法

在已載入的 XLSX 活頁簿中建立一個逐一提取已儲存儲存格的游標,並可透過選項納入具有獨立樣式的空白儲存格

語法

function CreateLoadedCellCursor: IXLSLoadedCellCursor; overload;
function CreateLoadedCellCursor(
  AIncludeStoredBlanks: Boolean): IXLSLoadedCellCursor; overload;

走訪順序與成本

游標會依集合順序走訪各工作表,再依資料列與資料行升冪走訪儲存格

SheetIndex、Row 與 Col 是以 1 為起點的公開座標

已具體化的工作表會直接從其已配置的 256 列稀疏區塊中讀取,無需建構排序後的儲存格清單

封裝工作表會透過封裝儲存迭代器直接讀取,並在走訪之後維持封裝狀態

游標狀態相對於活頁簿大小是固定的,不會配置與 XLSX 資料列或資料行上限同樣大小的陣列

無參數的多載會略過只有樣式的空白儲存格、已儲存的 Empty 佔位項以及已儲存的 Null 佔位項

傳入 True 可納入來自已具體化儲存或封裝儲存中具有獨立樣式的空白座標,而不會具體化封裝儲存格

在兩種模式下,無樣式的 Empty 與 Null 佔位項仍被排除在外

快照欄位

欄位意義
SheetIndex / SheetName擷取當下所屬工作表的識別
Row / Col以 1 為起點的儲存格座標
StyleIndex從已具體化儲存或封裝儲存擷取的 XLSX 儲存格格式索引
KindxlckText、xlckNumber、xlckDateTime、xlckBoolean、xlckFormula、xlckError 或 xlckBlank
Value為目前儲存格擷取的自有 Variant 值
Formula公式儲存格的公式文字,否則為空字串

TXLSLoadedCellSnapshot 中的字串與 Variant 是自有值,不會公開內部儲存格或封裝儲存指標

對於 XLSX 公式儲存格,Value 是目前儲存的快取值,走訪不會重新計算公式

對於 xlckBlank,Value 為 Unassigned,Formula 為空,StyleIndex 則識別已儲存的儲存格格式

狀態、失效與存留期

State 在第一次成功的 MoveNext 之前為 xlccBeforeFirst,在 Current 可用期間為 xlccActive,在走訪完成之後為 xlccEof

在第一個儲存格之前或 EOF 之後讀取 Current 會引發 EXLSLoadedCellCursorState

建立或刪除已儲存儲存格、封裝儲存的具體化、明確的索引重建,或者新增、刪除、移動或清除工作表,都會使游標失效

隨後的下一次 MoveNext 或 Current 呼叫會引發 EXLSLoadedCellCursorInvalidated

變更現有儲存格的值、公式或格式不會使游標失效,已擷取的快照也保持不變

在游標之前釋放活頁簿同樣會引發 EXLSLoadedCellCursorInvalidated,而不會讓游標留下懸空的活頁簿指標

世代驗證只提供快速失敗偵測,並無法讓並行的活頁簿變更與走訪變成執行緒安全的

範例

Cursor := Workbook.CreateLoadedCellCursor;
while Cursor.MoveNext do
begin
  Cell := Cursor.Current;
  Memo1.Lines.Add(Format('%s!R%dC%d = %s',
    [Cell.SheetName, Cell.Row, Cell.Col, VarToStr(Cell.Value)]));
end;

另請參閱