CreateLoadedCellCursor-methode
Maakt een pull-cursor aan over opgeslagen cellen in een geladen XLSX-werkmap, met een optie om onafhankelijk opgemaakte lege cellen op te nemen
Syntaxis
function CreateLoadedCellCursor: IXLSLoadedCellCursor; overload; function CreateLoadedCellCursor( AIncludeStoredBlanks: Boolean): IXLSLoadedCellCursor; overload;
Doorloopvolgorde en kosten
De cursor bezoekt werkbladen in verzamelvolgorde en daarna cellen op oplopende rij en kolom
SheetIndex, Row en Col zijn openbare coördinaten met basis 1
Gematerialiseerde werkbladen worden rechtstreeks gelezen uit hun toegewezen sparse blokken van 256 rijen, zonder een gesorteerde cellijst op te bouwen
Packed werkbladen worden rechtstreeks gelezen via de iterator van de packed-opslag en blijven na de doorloop packed
De cursorstatus is constant qua werkmapgrootte en reserveert geen arrays op de grootte van de XLSX-rij- of kolomlimieten
De overload zonder parameters slaat alleen op stijl gebaseerde lege cellen, opgeslagen Empty-plaatshouders en opgeslagen Null-plaatshouders over
Geef True door om onafhankelijk opgemaakte lege coördinaten uit gematerialiseerde of packed opslag op te nemen zonder packed cellen te materialiseren
Niet-opgemaakte Empty- en Null-plaatshouders blijven in beide modi uitgesloten
Momentopnamevelden
| Veld | Betekenis |
|---|---|
SheetIndex / SheetName | Identiteit van het eigenende werkblad op het moment van vastleggen |
Row / Col | Celcoördinaten met basis 1 |
StyleIndex | Uit gematerialiseerde of packed opslag vastgelegde XLSX-celformaatindex |
Kind | xlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormula, xlckError of xlckBlank |
Value | Eigen Variant-waarde vastgelegd voor de huidige cel |
Formula | Formuletekst voor formulecellen, anders een lege tekenreeks |
Tekenreeksen en Variants in TXLSLoadedCellSnapshot zijn waarden in eigendom en leggen geen interne cel- of packed-opslagverwijzingen bloot
Voor XLSX-formulecellen is Value de momenteel opgeslagen cachewaarde en herberekent de doorloop de formule niet
Voor xlckBlank is Value Unassigned, is Formula leeg en identificeert StyleIndex het opgeslagen celformaat
Status, ongeldigverklaring en levensduur
State is xlccBeforeFirst tot de eerste geslaagde MoveNext, xlccActive zolang Current beschikbaar is, en xlccEof nadat de doorloop is voltooid
Het lezen van Current vóór de eerste cel of na EOF veroorzaakt EXLSLoadedCellCursorState
Het aanmaken of verwijderen van opgeslagen cellen, materialisatie van de packed-opslag, expliciete indexherbouwingen of het toevoegen, verwijderen, verplaatsen of leegmaken van werkbladen maakt de cursor ongeldig
De daaropvolgende aanroep van MoveNext of Current veroorzaakt dan EXLSLoadedCellCursorInvalidated
Het wijzigen van de waarde, formule of opmaak van een bestaande cel maakt de cursor niet ongeldig, en een reeds vastgelegde momentopname blijft ongewijzigd
Het vrijgeven van de werkmap vóór de cursor veroorzaakt ook EXLSLoadedCellCursorInvalidated, in plaats van de cursor met een zwervende werkmapverwijzing achter te laten
Generatievalidatie is fail-fast detectie en maakt gelijktijdige mutatie en doorloop niet thread-veilig
Voorbeeld
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;