Metoda CreateLoadedCellCursor
Vytvoří pull kurzor nad uloženými buňkami v načteném sešitu XLSX, s volití zahrnout samostatně formátované prázdné buňky
Syntaxe
function CreateLoadedCellCursor: IXLSLoadedCellCursor; overload; function CreateLoadedCellCursor( AIncludeStoredBlanks: Boolean): IXLSLoadedCellCursor; overload;
Pořadí průchodu a náklady
Kurzor prochází listy v pořadí kolekce, poté buňky podle vzestupného řádku a sloupce
SheetIndex, Row a Col jsou veřejné souřadnice indexované od jedničky
Materializované listy se čtou přímo z jejich alokovaných řídkých bloků po 256 řádcích bez sestavování setříděného seznamu buněk
Zkomprimované listy se čtou přímo přes iterátor zkomprimovaného úložiště a po průchodu zůstávají zkomprimované
Stav kurzoru je konstantní vzhledem k velikosti sešitu a nealokuje pole dimenzovaná na limity řádků nebo sloupců XLSX
Přetížení bez parametrů přeskakuje prázdné buňky pouze se stylem, uložené zástupce Empty i uložené zástupce Null
Předáním True zahrnete samostatně formátované prázdné souřadnice z materializovaného i zkomprimovaného úložiště bez materializace zkomprimovaných buněk
Nestylovaní zástupci Empty a Null zůstávají v obou režimech vyloučeni
Pole snímku
| Pole | Význam |
|---|---|
SheetIndex / SheetName | Identita vlastnícího listu v okamžiku zachycení |
Row / Col | Souřadnice buňky indexované od jedničky |
StyleIndex | Index formátu buňky XLSX zachycený z materializovaného nebo zkomprimovaného úložiště |
Kind | xlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormula, xlckError nebo xlckBlank |
Value | Vlastněná hodnota Variant zachycená pro aktuální buňku |
Formula | Text vzorce pro buňky se vzorcem, jinak prázdný řetězec |
Řetězce a Varianty ve TXLSLoadedCellSnapshot jsou vlastněné hodnoty a nezpřístupňují interní ukazatele buněk ani zkomprimovaného úložiště
U buněk se vzorcem XLSX je Value aktuálně uložená kešovaná hodnota a průchod vzorec nepřepočítává
Pro xlckBlank je Value Unassigned, Formula je prázdný a StyleIndex identifikuje uložený formát buňky
Stav, zneplatnění a životnost
State je xlccBeforeFirst až do prvního úspěšného MoveNext, xlccActive dokud je Current k dispozici, a xlccEof po dokončení průchodu
Čtení Current před první buňkou nebo po EOF vyvolá EXLSLoadedCellCursorState
Vytváření nebo mazání uložených buněk, materializace zkomprimovaného úložiště, explicitní přestavby indexu nebo přidávání, mazání, přesouvání či mazání listů kurzor zneplatní
Další volání MoveNext nebo Current poté vyvolá EXLSLoadedCellCursorInvalidated
Změna hodnoty, vzorce nebo formátu existující buňky kurzor nezneplatní a již zachycený snímek zůstává nezměněn
Uvolnění sešitu dříve než kurzoru rovněž vyvolá EXLSLoadedCellCursorInvalidated místo ponechání kurzoru s visícím ukazatelem na sešit
Validace generací je fail-fast detekce a nečiní souběžnou mutaci a průchod bezpečnými pro vlákna
Pří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;