Documentazione HotXLS

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

CampoSignificato
SheetIndex / SheetNameIdentità del foglio di lavoro proprietario al momento dell'acquisizione
Row / ColCoordinate della cella in base 1
StyleIndexIndice di formato cella XLSX acquisito dall'archiviazione materializzata o compattata
KindxlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormula, xlckError o xlckBlank
ValueValore Variant di proprietà acquisito per la cella corrente
FormulaTesto 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;

Vedere anche