CreateLoadedCellCursor-Methode
Erstellt einen Pull-Cursor über die gespeicherten Zellen einer geladenen XLSX-Arbeitsmappe, mit der Option, unabhängig formatierte Leerzellen einzuschließen
Syntax
function CreateLoadedCellCursor: IXLSLoadedCellCursor; overload; function CreateLoadedCellCursor( AIncludeStoredBlanks: Boolean): IXLSLoadedCellCursor; overload;
Durchlaufreihenfolge und Kosten
Der Cursor besucht die Arbeitsblätter in Auflistungsreihenfolge und danach die Zellen nach aufsteigender Zeile und Spalte
SheetIndex, Row und Col sind öffentliche, einsbasierte Koordinaten
Materialisierte Arbeitsblätter werden direkt aus ihren zugewiesenen dünn besetzten 256-Zeilen-Blöcken gelesen, ohne eine sortierte Zellliste aufzubauen
Gepackte Arbeitsblätter werden direkt über den Iterator der gepackten Speicherung gelesen und bleiben nach dem Durchlauf gepackt
Der Cursorzustand ist konstant bezüglich der Arbeitsmappengröße und reserviert keine Arrays in Größe der XLSX-Zeilen- oder Spaltengrenzen
Die parameterlose Überladung überspringt reine Stil-Leerzellen, gespeicherte Empty-Platzhalter und gespeicherte Null-Platzhalter
Übergeben Sie True, um unabhängig formatierte Leerzellen-Koordinaten aus materialisierter oder gepackter Speicherung einzuschließen, ohne gepackte Zellen zu materialisieren
Unformatierte Empty- und Null-Platzhalter bleiben in beiden Modi ausgeschlossen
Momentaufnahmefelder
| Feld | Bedeutung |
|---|---|
SheetIndex / SheetName | Identität des besitzenden Arbeitsblatts zum Zeitpunkt der Erfassung |
Row / Col | Einsbasierte Zellkoordinaten |
StyleIndex | Aus materialisierter oder gepackter Speicherung erfasster XLSX-Zellformatindex |
Kind | xlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormula, xlckError oder xlckBlank |
Value | Eigener Variant-Wert, der für die aktuelle Zelle erfasst wurde |
Formula | Formeltext für Formelzellen, andernfalls eine leere Zeichenfolge |
Zeichenfolgen und Variants in TXLSLoadedCellSnapshot sind eigene Werte und geben keine internen Zell- oder gepackte Speicherzeiger frei
Bei XLSX-Formelzellen ist Value der derzeit gespeicherte Zwischenspeicherwert, und der Durchlauf berechnet die Formel nicht neu
Für xlckBlank ist Value Unassigned, Formula ist leer, und StyleIndex identifiziert das gespeicherte Zellformat
Zustand, Ungültigkeit und Lebensdauer
State ist xlccBeforeFirst, bis das erste MoveNext erfolgreich ist, xlccActive, solange Current verfügbar ist, und xlccEof, nachdem der Durchlauf abgeschlossen ist
Das Lesen von Current vor der ersten Zelle oder nach EOF löst EXLSLoadedCellCursorState aus
Das Erstellen oder Löschen gespeicherter Zellen, die Materialisierung der gepackten Speicherung, explizite Indexneuaufbauten oder das Hinzufügen, Löschen, Verschieben oder Leeren von Arbeitsblättern macht den Cursor ungültig
Der nächste MoveNext- oder Current-Aufruf löst dann EXLSLoadedCellCursorInvalidated aus
Das Ändern des Werts, der Formel oder des Formats einer bestehenden Zelle macht den Cursor nicht ungültig, und eine bereits erfasste Momentaufnahme bleibt unverändert
Die Freigabe der Arbeitsmappe vor dem Cursor löst ebenfalls EXLSLoadedCellCursorInvalidated aus, statt den Cursor mit einem hängenden Arbeitsmappenzeiger zurückzulassen
Die Generationsvalidierung ist eine Fail-Fast-Erkennung und macht gleichzeitige Änderung und Durchlauf nicht threadsicher
Beispiel
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;