Génération de structure du classeur chargé
Les générations structurelles permettent à un lecteur de conserver des instantanés peu coûteux et de rejeter le parcours une fois que la topologie du classeur dont il dépend a changé
Sources de génération
| Moteur | Génération du magasin de cellules | Génération de la collection de feuilles de calcul |
|---|---|---|
| XLS classique | TXLSWorksheet.CellStructureGeneration | TXLSWorksheets.StructureGeneration |
| XLSX | TXLSXWorksheet.CellStructureGeneration ou TXLSXCells.StructureGeneration | TXLSXSheets.StructureGeneration |
Chaque propriété est une valeur UInt64 en lecture seule et l'ampleur exacte de son changement n'est pas contractuelle
Opérations invalidantes
La création, la suppression ou le vidage de cellules stockées change la génération du magasin de cellules lorsque la topologie change réellement
L'insertion et la suppression de lignes ou de colonnes, le déplacement de coordonnées, l'ajout compacté ou la matérialisation, et les reconstructions explicites d'index de cellules invalident également l'état de parcours du magasin de cellules
L'ajout, la suppression, le déplacement ou le vidage de feuilles de calcul change la génération de la collection de feuilles lorsque la collection change réellement
Opérations non invalidantes
Modifier la valeur, la formule, la valeur en cache ou le format d'une cellule existante ne change pas sa génération de magasin de cellules
Renommer ou activer une feuille de calcul ne change pas la génération de la collection de feuilles, et les déplacements sans effet, les suppressions d'éléments absents ou le vidage d'une collection déjà vide conservent la génération courante
Validation
Appelez XlsValidateStructureGeneration avant de faire avancer ou de lire un état de parcours créé pour une génération antérieure
Une incompatibilité lève EXLSLoadedCellCursorInvalidated, permettant aux appelants de distinguer l'invalidation structurelle des erreurs de données ou de format
ExpectedGeneration := Worksheet.CellStructureGeneration;
{ Read or retain traversal state }
XlsValidateStructureGeneration(
ExpectedGeneration,
Worksheet.CellStructureGeneration);
Curseur du classeur classique
IXLSWorkbook.CreateLoadedCellCursor capture la génération agrégée du classeur classique et la valide avant chaque appel à MoveNext et Current
Le curseur parcourt directement les branches allouées du stockage clairsemé avec un état de curseur constant et renvoie des valeurs TXLSLoadedCellSnapshot détenues
La surcharge booléenne fige l'inclusion des vides stockés avec mise en forme propre ; les formats hérités de ligne, de colonne et de feuille de calcul ne créent pas d'entrées de curseur vides
Curseur du classeur XLSX
TXLSXWorkbook.CreateLoadedCellCursor capture un bail de durée de vie du classeur et une génération de topologie agrégée partagée par chaque magasin de cellules de feuille et la collection de feuilles
Le chemin matérialisé lit directement les blocs de lignes clairsemés, tandis que le chemin compacté réutilise l'itérateur compacté sans matérialiser de cellules ni retenir de pointeurs internes dans les instantanés
La surcharge booléenne peut inclure les vides stockés avec style seul dans les deux représentations de stockage, tandis que les espaces réservés Empty et Null sans style restent exclus
La libération du classeur invalide son bail avant que le stockage des feuilles ne soit libéré, de sorte qu'un accès ultérieur au curseur lève EXLSLoadedCellCursorInvalidated
Limite de concurrence
Les vérifications de génération fournissent une détection fail-fast uniquement et ne rendent pas thread-safe la mutation et le parcours concurrents du classeur