HotXLS 文件

CreateLoadedCellCursor 方法

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

語法

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

走訪順序與成本

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

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

走訪會直接沿著已配置的傳統稀疏儲存分支進行,因此游標狀態維持固定,不會配置與工作表資料列或資料行上限同樣大小的陣列

無參數的多載會略過空白儲存格,並保留現有的值與公式走訪合約

傳入 True 可納入其儲存格 XF 與繼承的資料列、資料行或工作表格式不同的已儲存空白儲存格

僅有繼承的格式不會產生或發出空白座標

快照欄位

欄位意義
SheetIndex / SheetName擷取當下所屬工作表的識別
Row / Col以 1 為起點的儲存格座標
StyleIndex傳統 XF 樣式索引
Kind (TXLSLoadedCellKind)xlckText、 xlckNumber、 xlckDateTime、 xlckBoolean、 xlckFormula或 xlckBlank
Value為目前儲存格擷取的自有 Variant 值
Formula公式儲存格的公式文字,否則為空字串

Strings and Variants in TXLSLoadedCellSnapshot 中的字串與 Variant 是自有值,不會公開內部儲存格物件

對於公式儲存格, Value 遵循傳統活頁簿的一般值存取語意,包括必要時進行計算

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

狀態與失效

State 在第一次成功的 TXLSLoadedCellCursorState之前為 xlccBeforeFirst ,在 MoveNext可用期間為 xlccActive ,在走訪完成之後為 Current is available, and xlccEof after traversal completes

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

建立或刪除已儲存儲存格,新增、刪除或移動工作表,或者取代活頁簿模型,都會使游標失效

隨後的下一次 MoveNext 或 Current 呼叫會引發 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;

另請參閱