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;