Dokumentácia HotXLS

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

PoleVýznam
SheetIndex / SheetNameIdentita vlastniaceho hárku v okamihu zachytenia
Row / ColSúradnice bunky indexované od jednotky
StyleIndexIndex formátu bunky XLSX zachytený z materializovaného alebo zkomprimovaného úložiska
KindxlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormula, xlckError alebo xlckBlank
ValueVlastnená hodnota Variant zachytená pre aktuálnu bunku
FormulaText 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;

Pozri tiež