Documentación HotXLS

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

CampoSignificado
SheetIndex / SheetNameIdentidad de la hoja de cálculo propietaria en el momento de la captura
Row / ColCoordenadas de celda basadas en uno
StyleIndexÍndice de formato de celda XLSX capturado del almacenamiento materializado o empaquetado
KindxlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormula, xlckError, or xlckBlank
ValueValor Variant de propiedad del llamador capturado para la celda actual
FormulaTexto 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;

Véase también