Documentazione HotXLS

Generazione della struttura del workbook caricato

Le generazioni strutturali consentono a un lettore di conservare snapshot poco costosi e di rifiutare l'attraversamento dopo che la topologia del workbook da cui dipende è cambiata

Fonti di generazione

MotoreGenerazione dell'archivio celleGenerazione della raccolta dei fogli di lavoro
XLS classicoTXLSWorksheet.CellStructureGenerationTXLSWorksheets.StructureGeneration
XLSXTXLSXWorksheet.CellStructureGeneration o TXLSXCells.StructureGenerationTXLSXSheets.StructureGeneration

Ogni proprietà è un valore UInt64 di sola lettura e l'entità esatta della sua variazione non è contrattuale

Operazioni che invalidano

La creazione, la rimozione o lo svuotamento di celle memorizzate cambia la generazione dell'archivio celle quando la topologia cambia effettivamente

L'inserimento e l'eliminazione di righe o colonne, lo spostamento di coordinate, l'aggiunta compattata o la materializzazione, e le ricostruzioni esplicite dell'indice delle celle invalidano anch'esse lo stato di attraversamento dell'archivio celle

L'aggiunta, l'eliminazione, lo spostamento o lo svuotamento dei fogli di lavoro cambia la generazione della raccolta dei fogli quando la raccolta cambia effettivamente

Operazioni che non invalidano

Modificare il valore, la formula, il valore in cache o il formato di una cella esistente non cambia la generazione del suo archivio celle

Rinominare o attivare un foglio di lavoro non cambia la generazione della raccolta dei fogli, e gli spostamenti senza effetto, le eliminazioni di elementi assenti o lo svuotamento di una raccolta già vuota conservano la generazione corrente

Validazione

Chiamare XlsValidateStructureGeneration prima di far avanzare o leggere uno stato di attraversamento creato per una generazione precedente

Una mancata corrispondenza genera EXLSLoadedCellCursorInvalidated, permettendo ai chiamanti di distinguere l'invalidazione strutturale dagli errori di dati o di formato

ExpectedGeneration := Worksheet.CellStructureGeneration;

{ Read or retain traversal state }

XlsValidateStructureGeneration(
  ExpectedGeneration,
  Worksheet.CellStructureGeneration);

Cursore del workbook classico

IXLSWorkbook.CreateLoadedCellCursor acquisisce la generazione aggregata del workbook classico e la valida prima di ogni chiamata a MoveNext e Current

Il cursore attraversa direttamente i rami allocati dell'archiviazione sparsa con stato del cursore costante e restituisce valori TXLSLoadedCellSnapshot di proprietà

L'overload booleano congela l'inclusione delle celle vuote memorizzate con stile proprio; i formati ereditati da riga, colonna e foglio di lavoro non creano voci vuote nel cursore

Cursore del workbook XLSX

TXLSXWorkbook.CreateLoadedCellCursor acquisisce un lease sulla durata di vita del workbook e una generazione di topologia aggregata condivisa da ogni archivio celle dei fogli e dalla raccolta dei fogli

Il percorso materializzato legge direttamente i blocchi di righe sparsi, mentre il percorso compattato riutilizza l'iteratore compattato senza materializzare celle né trattenere puntatori interni negli snapshot

L'overload booleano può includere le celle vuote memorizzate con solo stile in entrambe le rappresentazioni di archiviazione, mentre i segnaposto Empty e Null senza stile restano esclusi

Il rilascio del workbook invalida il suo lease prima che l'archiviazione dei fogli venga liberata, così un accesso successivo al cursore genera EXLSLoadedCellCursorInvalidated

Confine di concorrenza

I controlli di generazione forniscono solo un rilevamento fail-fast e non rendono thread-safe la mutazione e l'attraversamento concorrenti del workbook

Vedere anche