HotXLS-documentatie

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

VeldBetekenis
SheetIndex / SheetNameIdentiteit van het eigenende werkblad op het moment van vastleggen
Row / ColCelcoördinaten met basis 1
StyleIndexUit gematerialiseerde of packed opslag vastgelegde XLSX-celformaatindex
KindxlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormula, xlckError of xlckBlank
ValueEigen Variant-waarde vastgelegd voor de huidige cel
FormulaFormuletekst 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;

Zie ook