Ciclo di vita della cache pivot locale e layout nativo
La versione 2.384.94 aggiunge viste con cache condivisa, creazione e rimozione esplicita di Slicer pivot locali non-OLAP, ricostruzione di cache raggruppate e un generatore limitato di metadati del layout nativo
Viste condivise e creazione di Slicer
SecondPivot := Sheet.AddPivotTable(FirstPivot.Cache, 20, 1, 'SecondView');
Cache := Workbook.CreatePivotSlicerCache(FirstPivot, 'Category');
if Cache.ConnectPivotTable(SecondPivot) <> 1 then
raise Exception.Create('The second view could not be connected');
Slicer := Sheet.Slicers.Add(Cache, 1, 6, 8, 8);
TXLSXWorksheet.AddPivotTable(ACache: TXLSPivotCache; DestRow, DestCol: Integer; const Name: WideString): TXLSPivotTable crea un'altra vista di una cache posseduta da questo workbook; valida proprietà, geometria e nomi prima di agganciare la vista
TXLSXWorkbook.CreatePivotSlicerCache(ATable: TXLSPivotTable; const AFieldName: WideString): TXLSXSlicerCache crea o riusa in sicurezza una cache di campo sorgente supportata, mentre TXLSXSlicerCache.ConnectPivotTable(ATable: TXLSPivotTable): Integer collega una vista locale esistente con cache condivisa
TXLSXSlicers.Add(ACache: TXLSXSlicerCache; ARow1, ACol1, ARow2, ACol2: Integer): TXLSXSlicer crea la UI del foglio di lavoro usando confini di cella espliciti e inclusivi a base uno; nomi della sorgente, parti della cache, riferimenti ai disegni e appartenenza alla vista vengono preparati in staging prima della mutazione
Sorgenti Slicer raggruppate, calcolate e OLAP, cache estranee, domini importati incoerenti e maschere ambigue sullo stesso campo vengono rifiutati; l'XML importato delle viste supportate conserva le estensioni non correlate quando una nuova UI viene aggiunta
Rimozione esplicita e membri futuri
if Workbook.RemoveSlicerCache(Cache, xlsxSlicerPreserveCurrentSelection) <> 1 then
raise Exception.Create('The Slicer cache could not be removed');
TXLSXSlicerRemovalMode comprende xlsxSlicerClearSelection e xlsxSlicerPreserveCurrentSelection; TXLSXWorkbook.RemoveSlicerCache(ACache: TXLSXSlicerCache; AMode: TXLSXSlicerRemovalMode): Integer rimuove insieme la UI collegata, i riferimenti ai disegni, le parti native della cache e le connessioni
La modalità clear rimuove questa restrizione del Slicer conservando i filtri indipendenti e i predicati del chiamante; la modalità preserve trasferisce la sua restrizione corrente alle maschere ordinarie dei membri pivot prima di rimuovere il Slicer
L'operazione restituisce 1 in caso di successo e -1 per binding non supportati o non sicuri; tutte le viste interessate e lo stato della cache vengono validati e preparati in staging prima del commit, e un'ambiguità di proprietà sullo stesso campo viene rifiutata senza tirare a indovinare
TXLSPivotField.IncludeNewItemsInFilter: Boolean vale False per impostazione predefinita; un sottoinsieme manuale trattenuto esclude i membri appena aggiunti a meno che questa politica non venga abilitata esplicitamente, mentre un campo senza restrizioni li include
La selezione preservata resta quindi stabile dopo la crescita della sorgente, mentre la modalità clear include i nuovi membri della sorgente; gli elenchi di membri importati e creati dall'autore serializzano la stessa politica di occultamento dei membri futuri
Le operazioni esistenti Delete e Clear sulle collezioni proteggono comunque un'ultima vista Slicer collegata; usa l'operazione esplicita del workbook quando cache e restrizioni collegate vanno rimosse insieme
Ricostruzione fissa delle cache raggruppate
L'aggiornamento prepara in staging le identità dei gruppi numerici, di data e discreti espliciti a partire dai collegamenti base/parent validati, inclusi i campi derivati importati le cui colonne dei record sono assenti; i campi sorgente solo-link conservano i loro valori originali invece di essere raggruppati a loro volta
I domini supportati conservano gli handle esistenti dei membri, le didascalie e gli ordinali di gruppo; il raggruppamento numerico e per data usa una risoluzione per campo e un dominio nativo fisso di elementi di gruppo, e il raggruppamento per data richiede un intervallo pari a uno
TXLSPivotCacheField.GroupAutoStart e TXLSPivotCacheField.GroupAutoEnd valgono True per impostazione predefinita e preservano la politica dei confini importata; nuovi valori che richiederebbero l'espansione del dominio o un nuovo raggruppamento vengono rifiutati prima della mutazione
I gruppi discreti richiedono una mappatura esistente per ogni membro della sorgente; genitori ciclici, domini tipizzati non validi, didascalie stringa non univoche, basi calcolate, campi member-property e risoluzioni di genitore non supportate vengono rifiutati in modo transazionale
Il Make ordinario ricostruisce i valori derivati dei record supportati che sono obsoleti o mancanti, mentre MakePreview lo fa solo su una copia scollegata; il salvataggio omette gli shared item segnaposto interni dai domini nativi derivati ed emette esattamente gli indici di elementi di gruppo dichiarati
Anteprima dei metadati del layout nativo
function TryXLSXGeneratePivotLayout(const Xml: WideString; Table: TXLSPivotTable; out ResultXml, Reason: WideString): Boolean;
L'helper lxPivotXml prepara in staging rowItems, colItems, metadati degli assi e location per viste locali compatte supportate e non vuote, usando identità esatte di campi e membri della cache; supporta gerarchie ordinarie, subtotali superiori o inferiori predefiniti e uno dei due assi dati
Questa operazione solo-metadati richiede un Cache.RefreshOnLoad=True esplicito; preserva l'XML sconosciuto e restituisce l'XML originale più una motivazione in inglese quando campi raggruppati o calcolati, subtotali personalizzati, layout non supportati o identità importate incoerenti non possono essere rappresentati
L'helper non riscrive le celle del foglio di lavoro né cambia i flag attivi della tabella; i chiamanti che richiedono l'output nel foglio devono fornire un writer appropriato e un'operazione di materializzazione separatamente supportata
TXLSPivotTable.MakePreview(AWriter: TlxPivotResultWriter; ALayoutWriter: TlxPivotLayoutWriter): Integer fornisce callback sincrone di layout da un'anteprima scollegata, conservando l'identità originale di EvaluationSourceTable
TlxPivotLayoutWriter riceve la tabella originale, l'asse riga/colonna, i vettori copiati di indici di campo e indici di elementi della cache, TlxPivotLayoutItemKind, il tipo di subtotale e la lunghezza del prefisso; xlplikData, xlplikSubtotal e xlplikGrand distinguono le identità degli aggregati senza analizzare le didascalie
I vettori usano TlxPivotLayoutIndices e sono validi durante la callback; le eccezioni si propagano, e i comportamenti esistenti di Make e del MakePreview a writer singolo restano disponibili
TXLSPivotTables._AddOwned(ATable: TXLSPivotTable) riserva capacità nella collezione prima del trasferimento di proprietà e supporta l'aggancio transazionale interno delle viste; le applicazioni dovrebbero normalmente usare i metodi di creazione del foglio di lavoro
Confini
La versione 2.384.95 aggiunge output nativo nel foglio di lavoro in cache, disponibilità cross-filter in sola lettura ed epurazione esplicita dei membri storici; la visualizzazione nativa serializzata senza dati, la creazione di Timeline e una serializzazione più ampia del layout raggruppato conservano confini di accettazione separati