Metóda CreateLoadedCellCursor
Vytvorí pull kurzor nad uloženými bunkami v načítanom zošite XLSX, s možnosťou zahrnúť samostatne štýlované prázdne bunky
Syntax
function CreateLoadedCellCursor: IXLSLoadedCellCursor; overload; function CreateLoadedCellCursor( AIncludeStoredBlanks: Boolean): IXLSLoadedCellCursor; overload;
Poradie prechodu a náklady
Kurzor prechádza hárky v poradí kolekcie, potom bunky podľa vzostupného riadku a stĺpca
SheetIndex, Row a Col sú verejné súradnice indexované od jednotky
Materializované hárky sa čítajú priamo z ich alokovaných riedkych blokov po 256 riadkoch bez zostavovania zoradeného zoznamu buniek
Zkomprimované hárky sa čítajú priamo cez iterátor zkomprimovaného úložiska a po prechode ostanú zkomprimované
Stav kurzora je konštantný vzhľadom na veľkosť zošita a nealokuje polia dimenzované na limity riadkov alebo stĺpcov XLSX
Preťaženie bez parametrov preskakuje prázdne bunky len so štýlom, uložených zástupcov Empty aj uložených zástupcov Null
Odovzdaním True zahrnete samostatne štýlované prázdne súradnice z materializovaného aj zkomprimovaného úložiska bez materializácie zkomprimovaných buniek
Neštýlovaní zástupcovia Empty a Null ostanú v oboch režimoch vylúčení
Polia snímky
| Pole | Význam |
|---|---|
SheetIndex / SheetName | Identita vlastniaceho hárku v okamihu zachytenia |
Row / Col | Súradnice bunky indexované od jednotky |
StyleIndex | Index formátu bunky XLSX zachytený z materializovaného alebo zkomprimovaného úložiska |
Kind | xlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormula, xlckError alebo xlckBlank |
Value | Vlastnená hodnota Variant zachytená pre aktuálnu bunku |
Formula | Text vzorca pre bunky so vzorcom, inak prázdny reťazec |
Reťazce a Varianty v TXLSLoadedCellSnapshot sú vlastnené hodnoty a nesprístupňujú interné ukazovatele buniek ani zkomprimovaného úložiska
Pri bunkách so vzorcom XLSX je Value aktuálne uložená kešovaná hodnota a prechod vzorec neprepočítava
Pre xlckBlank je Value Unassigned, Formula je prázdny a StyleIndex identifikuje uložený formát bunky
Stav, zneplatnenie a životnosť
State je xlccBeforeFirst až po prvé úspešné MoveNext, xlccActive pokiaľ je Current k dispozícii, a xlccEof po dokončení prechodu
Čítanie Current pred prvou bunkou alebo po EOF vyvolá EXLSLoadedCellCursorState
Vytváranie alebo mazanie uložených buniek, materializácia zkomprimovaného úložiska, explicitné prestavby indexu alebo pridávanie, mazanie, presúvanie či mazanie hárkov kurzor zneplatní
Ďalšie volanie MoveNext alebo Current potom vyvolá EXLSLoadedCellCursorInvalidated
Zmena hodnoty, vzorca alebo formátu existujúcej bunky kurzor nezneplatní a už zachytená snímka ostáva nezmenená
Uvoľnenie zošita skôr než kurzora tiež vyvolá EXLSLoadedCellCursorInvalidated namiesto ponechania kurzora s visiacim ukazovateľom na zošit
Validácia generácií je fail-fast detekcia a nerobí súbežnú mutáciu a prechod bezpečnými pre vlákna
Príklad
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;