HotXLS-dokumentation

Metoden CreateLoadedCellCursor

Skapar en pull-markör över lagrade celler i en inläsad XLSX-arbetsbok, med möjlighet att ta med självständigt formaterade tomceller

Syntax

function CreateLoadedCellCursor: IXLSLoadedCellCursor; overload;
function CreateLoadedCellCursor(
  AIncludeStoredBlanks: Boolean): IXLSLoadedCellCursor; overload;

Traverseringsordning och kostnad

Markören besöker kalkylbladen i samlingsordning och därefter cellerna efter stigande rad och kolumn

SheetIndex, Row och Col är ettbaserade publika koordinater

Materialiserade kalkylblad läses direkt från sina allokerade glesa block om 256 rader utan att en sorterad cellista byggs upp

Packade kalkylblad läses direkt genom den packade lagringens iterator och förblir packade efter traverseringen

Markörstatusen är konstant oavsett arbetsbokens storlek och allokerar inga matriser dimensionerade efter XLSX:ens rad- eller kolumngränser

Överlagringen utan parametrar hoppar över endast-formaterade tomceller, lagrade Empty-platshållare och lagrade Null-platshållare

Skicka True för att ta med självständigt formaterade tomma koordinater från materialiserad eller packad lagring utan att materialisera packade celler

Oformaterade Empty- och Null-platshållare förblir uteslutna i båda lägena

Ögonblicksbildsfält

FältBetydelse
SheetIndex / SheetNameDet ägande kalkylbladets identitet vid fångstillfället
Row / ColEttbaserade cellkoordinater
StyleIndexXLSX-cellformatindex fångat från materialiserad eller packad lagring
KindxlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormula, xlckError eller xlckBlank
ValueEget Variant-värde fångat för den aktuella cellen
FormulaFormeltext för formelceller, annars en tom sträng

Strängar och Variants i TXLSLoadedCellSnapshot är egna värden och exponerar varken interna cellobjekt eller pekare till packad lagring

För XLSX-formelceller är Value det för närvarande lagrade cachade värdet, och traverseringen beräknar inte om formeln

För xlckBlank är Value Unassigned, Formula är tom och StyleIndex identifierar det lagrade cellformatet

Status, ogiltigförklaring och livstid

State är xlccBeforeFirst fram till det första lyckade MoveNext, xlccActive medan Current är tillgänglig och xlccEof efter att traverseringen har slutförts

Läsning av Current före den första cellen eller efter EOF utlöser EXLSLoadedCellCursorState

Att skapa eller ta bort lagrade celler, materialisering av packad lagring, explicita ombyggnader av index, eller att lägga till, ta bort, flytta eller tömma kalkylblad ogiltigförklarar markören

Nästa MoveNext- eller Current-anrop utlöser därefter EXLSLoadedCellCursorInvalidated

Att ändra en befintlig cells värde, formel eller format ogiltigförklarar inte markören, och en redan fångad ögonblicksbild förblir oförändrad

Att släppa arbetsboken före markören utlöser också EXLSLoadedCellCursorInvalidated i stället för att lämna markören med en hängande arbetsbokspekare

Genereringsvalidering är fail-fast-detektering och gör inte samtidig mutation och traversering trådsäkert

Exempel

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;

Se även