Metoda CreateLoadedCellCursor
Creează un cursor de tip pull peste celulele stocate într-un registru de lucru XLSX încărcat, cu opțiunea de a include golurile stilizate independent
Sintaxă
function CreateLoadedCellCursor: IXLSLoadedCellCursor; overload; function CreateLoadedCellCursor( AIncludeStoredBlanks: Boolean): IXLSLoadedCellCursor; overload;
Ordinea și costul parcurgerii
Cursorul vizitează foile de lucru în ordinea colecției, apoi celulele în ordine crescătoare pe rând și coloană
SheetIndex, Row și Col sunt coordonate publice cu indexare de la 1
Foile de lucru materializate sunt citite direct din blocurile lor rare alocate de 256 de rânduri, fără a construi o listă sortată de celule
Foile de lucru împachetate sunt citite direct prin iteratorul stocării împachetate și rămân împachetate după parcurgere
Starea cursorului este constantă față de dimensiunea registrului de lucru și nu alocă vectori dimensionați după limitele de rând sau coloană XLSX
Supraîncărcarea fără parametri sare peste golurile doar cu stil, placeholder-ele Empty stocate și placeholder-ele Null stocate
Passați True pentru a include coordonate goale stilizate independent din stocare materializată sau împachetată, fără a materializa celule împachetate
Placeholder-ele Empty și Null fără stil rămân excluse în ambele moduri
Câmpurile instantaneului
| Câmp | Semnificație |
|---|---|
SheetIndex / SheetName | Identitatea foii de lucru deținătoare la momentul capturării |
Row / Col | Coordonate de celulă cu indexare de la 1 |
StyleIndex | Indexul de format de celulă XLSX capturat din stocare materializată sau împachetată |
Kind | xlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormula, xlckError sau xlckBlank |
Value | Valoare Variant deținută capturată pentru celula curentă |
Formula | Textul formulei pentru celulele cu formulă, altfel un șir gol |
Șirurile și Variant-urile din TXLSLoadedCellSnapshot sunt valori deținute și nu expun pointeri interni de celulă sau de stocare împachetată
Pentru celulele cu formule XLSX, Value este valoarea din cache stocată în prezent, iar parcurgerea nu recalculează formula
Pentru xlckBlank, Value este Unassigned, Formula este gol, iar StyleIndex identifică formatul celulei stocate
Stare, invalidare și durată de viață
State este xlccBeforeFirst până la primul MoveNext reușit, xlccActive cât timp Current este disponibil și xlccEof după finalizarea parcurgerii
Citirea Current înainte de prima celulă sau după EOF ridică EXLSLoadedCellCursorState
Crearea sau ștergerea de celule stocate, materializarea stocării împachetate, reconstruirile explicite ale indexului sau adăugarea, ștergerea, mutarea și golirea foilor de lucru invalidează cursorul
Următorul apel MoveNext sau Current ridică atunci EXLSLoadedCellCursorInvalidated
Schimbarea valorii, formulei sau formatului unei celule existente nu invalidează cursorul, iar un instantaneu deja capturat rămâne neschimbat
Eliberarea registrului de lucru înaintea cursorului ridică de asemenea EXLSLoadedCellCursorInvalidated în loc să lase cursorul cu un pointer atârnând către registru de lucru
Validarea generației este detecție fail-fast și nu face mutația și parcurgerea concurentă sigure pentru fire de execuție
Exemplu
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;