Dokumentace HotXLS

Generování struktury načteného sešitu

Strukturální generace umožňují čtenáři uchovávat nenáročné snímky a odmítnout průchod poté, co se změnila topologie sešitu, na níž je závislý

Zdroje generací

EngineGenerace úložiště buněkGenerace kolekce listů
Classic XLSTXLSWorksheet.CellStructureGenerationTXLSWorksheets.StructureGeneration
XLSXTXLSXWorksheet.CellStructureGeneration nebo TXLSXCells.StructureGenerationTXLSXSheets.StructureGeneration

Každá vlastnost je hodnota UInt64 jen pro čtení a přesná míra její změny není součástí kontraktu

Zneplatňující operace

Vytváření, odstraňování nebo mazání uložených buněk mění generaci úložiště buněk, když se topologie skutečně změní

Vkládání a mazání řádků nebo sloupců, přesun souřadnic, zkomprimované přidávání nebo materializace a explicitní přestavby indexu buněk rovněž zneplatňují stav průchodu úložištěm buněk

Přidávání, mazání, přesouvání či mazání listů mění generaci kolekce listů, když se kolekce skutečně změní

Nezneplatňující operace

Změna hodnoty, vzorce, kešované hodnoty nebo formátu existující buňky nemění generaci jejího úložiště buněk

Přejmenování nebo aktivace listu nemění generaci kolekce listů a operace bez účinku, mazání neexistujících položek nebo vymazání již prázdné kolekce ponechávají aktuální generaci

Validace

Před posunem nebo čtením stavu průchodu vytvořeného pro dřívější generaci zavolejte XlsValidateStructureGeneration

Neshoda vyvolá EXLSLoadedCellCursorInvalidated, což volajícím umožňuje odlišit strukturální zneplatnění od chyb dat nebo formátu

ExpectedGeneration := Worksheet.CellStructureGeneration;

{ Read or retain traversal state }

XlsValidateStructureGeneration(
  ExpectedGeneration,
  Worksheet.CellStructureGeneration);

Kurzor klasického sešitu

IXLSWorkbook.CreateLoadedCellCursor zachytí agregovanou generaci klasického sešitu a validuje ji před každým voláním MoveNext a Current

Kurzor prochází přímo alokované větve řídkého úložiště s konstantním stavem kurzoru a vrací vlastněné hodnoty TXLSLoadedCellSnapshot

Boolean přetížení zmrazí, zda se zahrnují samostatně formátované uložené prázdné buňky; zděděné formáty řádku, sloupce a listu nevytvářejí prázdné položky kurzoru

Kurzor sešitu XLSX

TXLSXWorkbook.CreateLoadedCellCursor zachytí rezervaci na životnost sešitu a agregovanou topologickou generaci sdílenou úložištěm buněk každého listu a kolekcí listů

Materializovaná cesta čte řídké bloky řádků přímo, zatímco zkomprimovaná cesta znovu používá zkomprimovaný iterátor bez materializace buněk nebo uchovávání interních ukazatelů ve snímcích

Boolean přetížení může v obou reprezentacích úložiště zahrnovat uložené prázdné buňky pouze se stylem, zatímco nestylované zástupce Empty a Null zůstávají vyloučeny

Uvolnění sešitu zneplatní jeho rezervaci dříve, než se úložiště listů uvolní, takže pozdější přístup ke kurzoru vyvolá EXLSLoadedCellCursorInvalidated

Hranice souběžnosti

Kontroly generací poskytují pouze fail-fast detekci a nečiní souběžnou mutaci sešitu a průchod bezpečnými pro vlákna

Viz také