Metoda CreateLoadedCellCursor
Creează un cursor de tip pull peste celulele stocate într-un registru de lucru clasic XLS î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
Parcurgerea urmează direct ramurile alocate de stocare rară clasică, astfel încât starea cursorului rămâne constantă și nu alocă vectori dimensionați după limitele de rând sau coloană ale foii de lucru
Supraîncărcarea fără parametri sare peste goluri și păstrează contractul existent de parcurgere a valorilor și formulelor
Passați True pentru a include celulele goale stocate al căror XF de celulă diferă de formatul moștenit de rând, coloană sau foaie de lucru
Doar formatarea moștenită nu materializează și nu emite o coordonată goală
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 | Index de stil clasic XF |
Kind | xlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormula 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 obiecte interne de celulă
Pentru celulele cu formulă, Value urmează semantica normală de acces la valori a registrului de lucru clasic, inclusiv calculul când este necesar
Pentru xlckBlank, Value este Unassigned, Formula este gol, iar StyleIndex identifică XF-ul celulei stocate
Stare și invalidare
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, adăugarea, ștergerea sau mutarea foilor de lucru, sau înlocuirea modelului registrului 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
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;