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ält | Betydelse |
|---|---|
SheetIndex / SheetName | Det ägande kalkylbladets identitet vid fångstillfället |
Row / Col | Ettbaserade cellkoordinater |
StyleIndex | XLSX-cellformatindex fångat från materialiserad eller packad lagring |
Kind | xlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormula, xlckError eller xlckBlank |
Value | Eget Variant-värde fångat för den aktuella cellen |
Formula | Formeltext 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;