Documentație HotXLS

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âmpSemnificație
SheetIndex / SheetNameIdentitatea foii de lucru deținătoare la momentul capturării
Row / ColCoordonate de celulă cu indexare de la 1
StyleIndexIndexul de format de celulă XLSX capturat din stocare materializată sau împachetată
KindxlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormula, xlckError sau xlckBlank
ValueValoare Variant deținută capturată pentru celula curentă
FormulaTextul 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;

Consultați și