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
| Motore | Generazione dell'archivio celle | Generazione della raccolta dei fogli di lavoro |
|---|---|---|
| XLS classico | TXLSWorksheet.CellStructureGeneration | TXLSWorksheets.StructureGeneration |
| XLSX | TXLSXWorksheet.CellStructureGeneration o TXLSXCells.StructureGeneration | TXLSXSheets.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