HotXLS-Dokumentation

Strukturgeneration geladener Arbeitsmappen

Strukturgenerationen lassen einen Leser kostengünstige Momentaufnahmen behalten und Durchläufe verwerfen, nachdem sich die Arbeitsmappentopologie, von der er abhängt, geändert hat

Generationsquellen

EngineGeneration des ZellspeichersGeneration der Arbeitsblattauflistung
Classic XLSTXLSWorksheet.CellStructureGenerationTXLSWorksheets.StructureGeneration
XLSXTXLSXWorksheet.CellStructureGeneration oder TXLSXCells.StructureGenerationTXLSXSheets.StructureGeneration

Jede Eigenschaft ist ein schreibgeschützter UInt64-Wert, und der genaue Betrag, um den sie sich ändert, ist nicht vertraglich zugesichert

Ungültig machende Operationen

Das Erstellen, Entfernen oder Leeren gespeicherter Zellen ändert die Generation des Zellspeichers, wenn sich die Topologie tatsächlich ändert

Einfügen oder Löschen von Zeilen oder Spalten, Koordinatenverschiebungen, gepacktes Anhängen oder Materialisierung und explizite Neuaufbauten des Zellindex machen ebenfalls den Durchlaufzustand des Zellspeichers ungültig

Das Hinzufügen, Löschen, Verschieben oder Leeren von Arbeitsblättern ändert die Generation der Arbeitsblattauflistung, wenn sich die Auflistung tatsächlich ändert

Nicht ungültig machende Operationen

Das Ändern des Werts, der Formel, des zwischengespeicherten Werts oder des Formats einer bestehenden Zelle ändert ihre Zellspeicher-Generation nicht

Das Umbenennen oder Aktivieren eines Arbeitsblatts ändert die Generation der Arbeitsblattauflistung nicht, und No-Op-Verschiebungen, fehlende Löschungen oder das Leeren einer bereits leeren Auflistung behalten die aktuelle Generation

Validierung

Rufen Sie XlsValidateStructureGeneration auf, bevor Sie Durchlaufzustand voranstellen oder lesen, der für eine frühere Generation erstellt wurde

Eine Abweichung löst EXLSLoadedCellCursorInvalidated aus, sodass Aufrufer strukturelle Ungültigkeit von Daten- oder Formatfehlern unterscheiden können

ExpectedGeneration := Worksheet.CellStructureGeneration;

{ Read or retain traversal state }

XlsValidateStructureGeneration(
  ExpectedGeneration,
  Worksheet.CellStructureGeneration);

Cursor der Classic-Arbeitsmappe

IXLSWorkbook.CreateLoadedCellCursor erfasst die aggregierte Generation der Classic-Arbeitsmappe und validiert sie vor jedem MoveNext- und Current-Aufruf

Der Cursor durchläuft die zugewiesenen Verzweigungen des Sparspeichers direkt mit konstantem Cursorzustand und gibt eigene TXLSLoadedCellSnapshot-Werte zurück

Die boolesche Überladung friert ein, ob unabhängig formatierte gespeicherte Leerzellen eingeschlossen werden; geerbte Zeilen-, Spalten- und Arbeitsblattformate erzeugen keine Leerzellen-Einträge im Cursor

Cursor der XLSX-Arbeitsmappe

TXLSXWorkbook.CreateLoadedCellCursor erfasst eine Lease über die Arbeitsmappen-Lebensdauer und eine aggregierte Topologiegeneration, die von jedem Arbeitsblatt-Zellspeicher und der Arbeitsblattauflistung gemeinsam genutzt wird

Der materialisierte Pfad liest Sparse-Zeilenblöcke direkt, während der gepackte Pfad den gepackten Iterator wiederverwendet, ohne Zellen zu materialisieren oder interne Zeiger in Momentaufnahmen zu behalten

Die boolesche Überladung kann in beiden Speicherrepräsentationen nur auf Stil beruhende gespeicherte Leerzellen einschließen, während unformatierte Empty- und Null-Platzhalter ausgeschlossen bleiben

Die Freigabe der Arbeitsmappe macht ihre Lease ungültig, bevor der Arbeitsblattspeicher freigegeben wird, sodass späterer Cursorzugriff EXLSLoadedCellCursorInvalidated auslöst

Nebenläufigkeitsgrenze

Generationsprüfungen bieten nur eine Fail-Fast-Erkennung und machen gleichzeitige Arbeitsmappenänderung und Durchlauf nicht threadsicher

Siehe auch