Método CreateLoadedCellCursor
Crea un cursor de extracción sobre las celdas almacenadas de un libro XLSX cargado, con una opción para incluir celdas en blanco con estilo independiente
Sintaxis
function CreateLoadedCellCursor: IXLSLoadedCellCursor; overload; function CreateLoadedCellCursor( AIncludeStoredBlanks: Boolean): IXLSLoadedCellCursor; overload;
Orden y coste del recorrido
El cursor recorre las hojas de cálculo en orden de colección y, después, las celdas por fila y columna ascendentes
SheetIndex, Row y Col son coordenadas públicas basadas en uno
Las hojas de cálculo materializadas se leen directamente de sus bloques dispersos asignados de 256 filas, sin construir una lista de celdas ordenada
Las hojas de cálculo empaquetadas se leen directamente mediante el iterador de almacenamiento empaquetado y permanecen empaquetadas después del recorrido
El estado del cursor es constante respecto al tamaño del libro y no asigna matrices dimensionadas según los límites de filas o columnas de XLSX
La sobrecarga sin parámetros omite los valores en blanco que solo tienen estilo y los marcadores de posición Empty y Null almacenados
Pase True para incluir coordenadas en blanco con estilo independiente procedentes del almacenamiento materializado o empaquetado, sin materializar celdas empaquetadas
Los marcadores de posición Empty y Null sin estilo permanecen excluidos en ambos modos
Campos de la instantánea
| Campo | Significado |
|---|---|
SheetIndex / SheetName | Identidad de la hoja de cálculo propietaria en el momento de la captura |
Row / Col | Coordenadas de celda basadas en uno |
StyleIndex | Índice de formato de celda XLSX capturado del almacenamiento materializado o empaquetado |
Kind | xlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormula, xlckError, or xlckBlank |
Value | Valor Variant de propiedad del llamador capturado para la celda actual |
Formula | Texto de fórmula para las celdas de fórmula; de lo contrario, una cadena vacía |
Las cadenas y los Variant de TXLSLoadedCellSnapshot son valores de propiedad del llamador y no exponen punteros internos a celdas ni al almacenamiento empaquetado
Para las celdas de fórmula XLSX, Value es el valor en caché almacenado actualmente y el recorrido no recalcula la fórmula
Para xlckBlank, Value es Unassigned, Formula está vacío y StyleIndex identifica el formato de celda almacenado
Estado, invalidación y tiempo de vida
State es xlccBeforeFirst hasta el primer MoveNext correcto, xlccActive mientras Current está disponible y xlccEof cuando el recorrido termina
Leer Current antes de la primera celda o después de EOF genera EXLSLoadedCellCursorState
Crear o eliminar celdas almacenadas, materializar el almacenamiento empaquetado, recompilar índices explícitamente o agregar, eliminar, mover o vaciar hojas de cálculo invalida el cursor
La siguiente llamada a MoveNext o Current genera entonces EXLSLoadedCellCursorInvalidated
Cambiar el valor, la fórmula o el formato de una celda existente no invalida el cursor, y una instantánea ya capturada permanece sin cambios
Liberar el libro antes que el cursor también genera EXLSLoadedCellCursorInvalidated, en lugar de dejar el cursor con un puntero a libro colgante
La validación de generación es una detección de fallo inmediato y no hace que la mutación simultánea y el recorrido sean seguros para subprocesos
Ejemplo
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;