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;