Materializzazione sicura delle tabelle pivot nel foglio
La versione 2.384.90 aggiunge la valutazione pivot isolata e la sostituzione protetta dei risultati nel foglio di lavoro; la versione 2.384.92 estende le sorgenti locali supportate ai nomi definiti e alle tabelle risolti a ogni chiamata
Materializzare una vista
if Workbook.RefreshPivotCache(Pivot.CacheId) <> 1 then
raise Exception.Create('Pivot cache refresh failed');
if Workbook.MaterializePivotTable(Pivot) <> 1 then
raise Exception.Create('Pivot output cannot be replaced safely');
TXLSXWorkbook.MaterializePivotTable(ATable: TXLSPivotTable): Integer calcola i risultati dalla cache corrente e li colloca alle coordinate FirstRow e FirstCol della vista; restituisce 1 in caso di successo o -1 per sorgenti non supportate, destinazioni non sicure, fallimento di valutazione o una mutazione del workbook rifiutata
Aggiornamento e ricalcolo del foglio di lavoro restano operazioni esplicite; la materializzazione riuscita invalida le dipendenze di calcolo, così i chiamanti possono ricalcolare le formule a valle quando è opportuno
L'overload predefinito accetta celle di destinazione vuote e celle invariate possedute in precedenza dalla stessa vista; celle occupate di proprietà altrui, ovunque dentro il rettangolo di output completo, rifiutano l'operazione, compresi i vuoti che il writer dei risultati non riempie
if Workbook.MaterializePivotTable(Pivot, True) <> 1 then
raise Exception.Create('Existing Pivot values cannot be adopted safely');
TXLSXWorkbook.MaterializePivotTable(ATable: TXLSPivotTable; AAdoptExisting: Boolean): Integer può adottare esplicitamente celle scalari esistenti dentro il rettangolo precedente dichiarato della vista, alla sua prima materializzazione; non autorizza la sostituzione di formule, membri di array, rich text, celle con metadati o contenuti fuori da quel rettangolo
Proprietà, ridimensionamento e spostamento
La vista conserva coordinate esatte e snapshot tipizzati dei valori per le celle scritte; il salvataggio XLSX preserva questa proprietà nella definizione della pivot, così gli aggiornamenti successivi possono validarla dopo la riapertura
Contenuto tipizzato cambiato o una cella di proprietà non vuota rimossa rifiutano l'intero aggiornamento; i sottotipi numerici condividono una rappresentazione numerica canonica, mentre testo, valori Boolean ed errori conservano identità distinte
Ridurre o spostare un risultato cancella solo i valori di proprietà invariati che non vengono più prodotti; gli oggetti cella esistenti, la formattazione e i commenti restano disponibili, e le celle non correlate restano fuori dall'insieme di proprietà
Cambiare FirstRow o FirstCol sposta il prossimo output mentre le coordinate di proprietà precedenti restano disponibili per la pulizia; un risultato vuoto cancella i valori di proprietà e conserva una posizione di solo ancoraggio
Anteprima isolata
function TXLSPivotTable.MakePreview(AWriter: TlxPivotResultWriter): Integer; property TXLSPivotTable.EvaluationSourceTable: TXLSPivotTable;
TXLSPivotTable.MakePreview usa copie indipendenti della cache e della vista, segnaposto dei campi calcolati inclusi, e le scarta dopo la valutazione; il Make ordinario conserva il suo comportamento esistente su cache attiva
Il writer riceve offset di riga e colonna a base zero e valori tipizzati; il valore restituito segue il conteggio delle celle aggregate di Make, che è separato dal numero di chiamate al writer; una cache o un writer mancante restituisce zero, e le eccezioni di valutazione o del writer si propagano
I predicati sui record del chiamante e i filtri del proprietario registrati restano attivi nelle anteprime, comprese le selezioni dei Slicer del workbook; le callback ricevono la vista valutata temporanea e la sua cache temporanea
TXLSPivotTable.EvaluationSourceTable restituisce la vista attiva per una valutazione ordinaria e la vista attiva originale per un'anteprima; usala quando una callback deve identificare una vista collegata, leggendo invece i record valutati dalla Cache temporanea della callback
I proprietari delle callback restano di proprietà del chiamante; gli oggetti di anteprima e i loro record non devono essere trattenuti dopo la fine della callback o della chiamata di anteprima
Confini di sicurezza
La materializzazione richiede una vista e una cache registrate nello stesso workbook e una sorgente locale supportata, rettangolare, con nome definito o a tabella; la risoluzione della sorgente segue nomi ed estensioni correnti delle tabelle, e le sorgenti non supportate o non risolubili vengono rifiutate prima della mutazione
Geometria corrente della sorgente, altre posizioni di pivot, tabelle strutturate, intervalli di risultati di query, celle unite e array fissi o dinamici non possono intersecare il nuovo output o le vecchie celle di proprietà da cancellare; i totali della tabella restano protetti anche se esclusi dai record della cache
Validazione e preparazione dell'output girano sotto un lease di lettura, seguite dalla normale guardia di mutazione del workbook e dal controllo di generazione; una vista del workbook in sola lettura bloccata rifiuta la materializzazione senza sostituire celle né cambiare geometria
I filtri devono essere in sola lettura e seguire il normale contratto del workbook a scrittore singolo; l'isolamento impedisce ai calcoli normali di anteprima di cambiare la cache attiva, ma le scritture arbitrarie delle callback attraverso oggetti attivi catturati separatamente non possono essere annullate
Questa operazione materializza il layout dei risultati calcolati della libreria; la creazione completa del layout pivot nativo, la creazione della UI dei Slicer e la valutazione della visualizzazione cross-filter senza dati restano capacità separate