Metodo CreateLoadedCellCursor
Crea un cursore pull sulle celle memorizzate di un workbook XLSX caricato, con un'opzione per includere le celle vuote con stile proprio
Sintassi
function CreateLoadedCellCursor: IXLSLoadedCellCursor; overload; function CreateLoadedCellCursor( AIncludeStoredBlanks: Boolean): IXLSLoadedCellCursor; overload;
Ordine e costo di attraversamento
Il cursore visita i fogli di lavoro nell'ordine della raccolta, poi le celle per riga e colonna crescenti
SheetIndex, Row e Col sono coordinate pubbliche in base 1
I fogli di lavoro materializzati vengono letti direttamente dai loro blocchi sparsi allocati di 256 righe senza costruire un elenco ordinato di celle
I fogli di lavoro compattati vengono letti direttamente tramite l'iteratore dell'archiviazione compattata e restano compattati dopo l'attraversamento
Lo stato del cursore è costante rispetto alla dimensione del workbook e non alloca array dimensionati sui limiti di riga o colonna XLSX
L'overload senza parametri salta le celle vuote con solo stile, i segnaposto Empty memorizzati e i segnaposto Null memorizzati
Passare True per includere le coordinate vuote con stile proprio provenienti dall'archiviazione materializzata o compattata senza materializzare le celle compattate
I segnaposto Empty e Null senza stile restano esclusi in entrambe le modalità
Campi dello snapshot
| Campo | Significato |
|---|---|
SheetIndex / SheetName | Identità del foglio di lavoro proprietario al momento dell'acquisizione |
Row / Col | Coordinate della cella in base 1 |
StyleIndex | Indice di formato cella XLSX acquisito dall'archiviazione materializzata o compattata |
Kind | xlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormula, xlckError o xlckBlank |
Value | Valore Variant di proprietà acquisito per la cella corrente |
Formula | Testo della formula per le celle con formula, altrimenti una stringa vuota |
Le stringhe e i Variant in TXLSLoadedCellSnapshot sono valori di proprietà e non espongono i puntatori interni delle celle o dell'archiviazione compattata
Per le celle con formula XLSX, Value è il valore in cache attualmente memorizzato e l'attraversamento non ricalcola la formula
Per xlckBlank, Value è Unassigned, Formula è vuota e StyleIndex identifica il formato di cella memorizzato
Stato, invalidazione e durata di vita
State è xlccBeforeFirst fino al primo MoveNext riuscito, xlccActive finché Current è disponibile, e xlccEof al termine dell'attraversamento
Leggere Current prima della prima cella o dopo EOF genera EXLSLoadedCellCursorState
La creazione o l'eliminazione di celle memorizzate, la materializzazione dell'archiviazione compattata, le ricostruzioni esplicite dell'indice, o l'aggiunta, l'eliminazione, lo spostamento o lo svuotamento dei fogli di lavoro invalidano il cursore
La successiva chiamata a MoveNext o Current genera allora EXLSLoadedCellCursorInvalidated
Modificare il valore, la formula o il formato di una cella esistente non invalida il cursore, e uno snapshot già acquisito resta invariato
Il rilascio del workbook prima del cursore genera anch'esso EXLSLoadedCellCursorInvalidated invece di lasciare il cursore con un puntatore pendente al workbook
La validazione della generazione è un rilevamento fail-fast e non rende thread-safe la mutazione e l'attraversamento concorrenti
Esempio
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;