Documentación HotXLS

Generación de estructura del libro cargado

Las generaciones estructurales permiten a un lector conservar instantáneas poco costosas y rechazar el recorrido después de que la topología del libro de la que depende haya cambiado

Orígenes de generación

MotorGeneración del almacén de celdasGeneración de la colección de hojas de cálculo
XLS clásicoTXLSWorksheet.CellStructureGenerationTXLSWorksheets.StructureGeneration
XLSXTXLSXWorksheet.CellStructureGeneration or TXLSXCells.StructureGenerationTXLSXSheets.StructureGeneration

Cada propiedad es un valor UInt64 de solo lectura y la cantidad exacta en la que cambia no forma parte del contrato

Operaciones que invalidan

Crear, quitar o vaciar celdas almacenadas cambia la generación del almacén de celdas cuando la topología cambia realmente

La inserción y eliminación de filas o columnas, el movimiento de coordenadas, el anexado empaquetado o la materialización y las recompilaciones explícitas del índice de celdas también invalidan el estado de recorrido del almacén de celdas

Agregar, eliminar, mover o vaciar hojas de cálculo cambia la generación de la colección de hojas de cálculo cuando la colección cambia realmente

Operaciones que no invalidan

Cambiar el valor, la fórmula, el valor en caché o el formato de una celda existente no cambia la generación de su almacén de celdas

Cambiar el nombre de una hoja de cálculo o activarla no cambia la generación de la colección de hojas de cálculo, y los movimientos sin efecto, las eliminaciones inexistentes o el vaciado de una colección ya vacía conservan la generación actual

Validación

Llame a XlsValidateStructureGeneration antes de hacer avanzar o leer el estado de recorrido creado para una generación anterior

Una discrepancia genera EXLSLoadedCellCursorInvalidated, lo que permite a los llamadores distinguir la invalidación estructural de los errores de datos o de formato

ExpectedGeneration := Worksheet.CellStructureGeneration;

{ Read or retain traversal state }

XlsValidateStructureGeneration(
  ExpectedGeneration,
  Worksheet.CellStructureGeneration);

Cursor del libro clásico

IXLSWorkbook.CreateLoadedCellCursor captura la generación agregada del libro clásico y la valida antes de cada llamada a MoveNext y Current

El cursor recorre directamente las ramas asignadas del almacenamiento disperso con un estado de cursor constante y devuelve valores TXLSLoadedCellSnapshot de propiedad del llamador

La sobrecarga booleana inmoviliza si se incluyen los valores en blanco almacenados con estilo independiente; los formatos heredados de fila, columna y hoja de cálculo no crean entradas en blanco en el cursor

Cursor del libro XLSX

TXLSXWorkbook.CreateLoadedCellCursor captura una concesión ligada al tiempo de vida del libro y una generación de topología agregada compartidas por todos los almacenes de celdas de las hojas de cálculo y la colección de hojas de cálculo

La ruta materializada lee directamente los bloques dispersos de filas, mientras que la ruta empaquetada reutiliza el iterador empaquetado sin materializar celdas ni retener punteros internos en las instantáneas

La sobrecarga booleana puede incluir los valores en blanco almacenados que solo tienen estilo en cualquiera de las dos representaciones de almacenamiento, mientras que los marcadores de posición Empty y Null sin estilo permanecen excluidos

Liberar el libro invalida su concesión antes de que se libere el almacenamiento de las hojas de cálculo, de modo que el acceso posterior al cursor genera EXLSLoadedCellCursorInvalidated

Límite de concurrencia

Las comprobaciones de generación solo proporcionan una detección de fallo inmediato y no hacen que la mutación y el recorrido simultáneos del libro sean seguros para subprocesos

Véase también