Output pivot nativo, query cross-filter e membri mancanti
Output nativo nel foglio di lavoro in cache
function TXLSXWorkbook.MaterializeNativePivotTable( ATable: TXLSPivotTable): Integer; function TXLSXWorkbook.MaterializeNativePivotTable( ATable: TXLSPivotTable; AAdoptExisting: Boolean): Integer;
L'operazione prepara in staging sia la griglia completa del report nativo compatto, tabellare o in formato struttura sia la sua location, rowItems, colItems e metadati dell'asse dati, prima di effettuare il commit insieme dei valori del foglio e della proprietà dell'output; restituisce 1 in caso di successo o -1 con una diagnostica per stato non supportato o collisione
Le viste locali non vuote supportate conservano i filtri correnti, le identità esatte dei membri della cache, le gerarchie ordinarie, i domini raggruppati supportati, i subtotali predefiniti o personalizzati e uno dei due assi dati supportati; la griglia nativa usa i valori aggregati originali invece di ricombinare medie mostrate o altri risultati non additivi
Gli oggetti cella e la formattazione esistenti restano disponibili, mentre ridurre o spostare il report cancella solo i valori precedentemente di proprietà e invariati; output modificato, sovrapposizione con la sorgente, unioni, formule, array e altri report vengono rifiutati prima della mutazione
L'output scalare importato richiede un'adozione esplicita con AAdoptExisting=True; gli aggiornamenti successivi usano la proprietà persistita cella per cella, anche dopo salvataggio e riapertura
L'operazione legge i record correnti della cache e non aggiorna i dati della sorgente né ricalcola le formule; Cache.RefreshOnLoad=False è valido perché il foglio di lavoro ora contiene i risultati nativi realmente preparati in staging
Le callback di filtro sui record del chiamante partecipano all'anteprima scollegata ma non hanno rappresentazione OOXML; l'aggiornamento nativo esplicito di Excel non può riprodurre restrizioni arbitrarie da callback, mentre i filtri manuali e i Slicer supportati e persistiti conservano la loro rappresentazione wire
I campi calcolati SUM supportati della cache e gli elementi calcolati di proprietà della cache usano il contratto delle somme di contesto descritto in Campi pivot calcolati nativi ed elementi di proprietà della cache; didascalie personalizzate dei membri e combinazioni di layout non supportate vengono rifiutati esplicitamente, mentre il layout grezzo generato supportato conserva l'XML non correlato e le maschere correnti dei membri
TryXLSXMakeNativePivotLayout(const Xml: WideString; Table: TXLSPivotTable; AWriter: TlxPivotResultWriter; out ResultXml, Reason: WideString): Boolean è l'helper di layout in staging di livello più basso in lxPivotXml
Il suo writer riceve l'intero rettangolo del report in ordine row-major, celle vuote comprese, con offset a base zero dall'ancoraggio della tabella; preflight di XML e griglia si completano prima della prima callback, ma le scritture del chiamante non possono essere annullate se una callback solleva un'eccezione
La facciata del workbook fornisce un writer di cattura scollegato per aggiornamenti transazionali delle celle; l'anteprima in staging combinata e le griglie native di Variant sono limitate a 4194304 celle
Il percorso nativo di anteprima può richiedere l'orientamento nativo dei totali complessivi tramite il parametro opzionale AUseNativeGrandTotals di TXLSPivotTable.MakePreview; le chiamate esistenti a scrittore singolo e con writer di layout conservano il comportamento precedente
Layout ed etichette ripetute
Imposta Compact e Outline sul report e su ogni campo di riga prima della materializzazione; i campi tabellari usano entrambi i flag come False, i campi in formato struttura usano Compact=False e Outline=True, e i campi compatti usano entrambi i flag come True
property TXLSPivotField.RepeatLabels: Boolean;
RepeatLabels vale False per impostazione predefinita, viene copiato indipendentemente con il campo e legge o scrive l'estensione nativa x14:pivotField fillDownLabels; ripete le etichette dei predecessori nell'output tabellare e in formato struttura e non ha effetto su un campo i cui flag compatto e struttura sono entrambi abilitati
Ogni campo di riga separato riceve la propria colonna fisica, mentre campi compatti adiacenti in formato struttura condividono una colonna di etichette; più misure sulle righe seguono CompactData, e più misure sulle colonne conservano didascalie dei dati e totali complessivi indipendenti
I subtotali tabellari predefiniti compaiono sotto il loro gruppo; SubtotalTop in formato struttura seleziona la posizione superiore o inferiore, mentre le misure sulle righe usano righe di aggregato separate sotto il gruppo e conservano la didascalia di ciascuna misura
L'output nativo in cache lascia vuote le intersezioni di riga e colonna assenti e preserva uno zero numerico reale; il Make ordinario e le anteprime senza l'opzione nativa conservano il loro precedente comportamento con risultato vuoto
I campi inattivi e le misure ereditano il layout del report nei metadati nativi in staging, così l'aggiornamento esplicito di Excel conserva le didascalie appropriate di campi e dati; l'operazione preserva le impostazioni attive dei campi e i controlli esistenti di proprietà
Le estensioni importate di etichette ripetute accettano alias di namespace, incluse dichiarazioni sull'elemento di estensione stesso; l'XML sconosciuto non correlato resta preservato dal percorso di materializzazione nativo
Membri raggruppati, ordine degli assi e subtotali personalizzati
L'output nativo supporta gruppi completi di intervalli numerici, gruppi di date e gruppi manuali di membri rappresentati dai metadati di raggruppamento tipizzati esistenti della cache; le etichette generate conservano le GroupItemLabels importate esatte, incluse didascalie Unicode e di date localizzate
Il raggruppamento viene valutato su una cache scollegata, preservando i record, gli handle degli shared item e le identità di gruppo della cache attiva; confini non validi, intervalli nulli, domini incompleti o tipi di valore di elementi di gruppo non supportati vengono rifiutati prima di cambiare l'output del foglio
La TXLSPivotField.Position a base zero esistente determina l'ordine nativo stabile dell'asse di riga o colonna; posizioni uguali conservano l'ordine dei campi scelto dall'autore, quindi i campi appena creati con posizione predefinita conservano il loro ordinamento precedente
Le gerarchie native importate Anno/Mese e genitore/membro-manuale conservano la loro sequenza esplicita di assi, mentre gli indici dei campi della cache, gli indici dei campi della vista e le identità di base del calcolo di visualizzazione restano invariati; i gruppi manuali rispettano l'ordine esplicito degli elementi pivot invece di ordinare etichette di gruppo o indici della cache
I subtotali di riga personalizzati supportano xlpsSum, xlpsCount, xlpsAverage, xlpsMax, xlpsMin, xlpsProduct, xlpsCountNumbers, xlpsStdDev, xlpsStdDevP, xlpsVar e xlpsVarP, comprese più funzioni selezionate, campi tabellari o in formato struttura e misure sulle righe
Ogni funzione aggrega i record sorgente originali al proprio ambito di subtotale; i suoi metadati di riga in staging identificano la funzione selezionata in modo indipendente, preservando il comportamento dell'aggiornamento esplicito di Excel per calcoli non additivi e risultati vuoti o di errore
Una selezione importata di subtotale personalizzato esclude il subtotale automatico implicito anche quando defaultSubtotal è assente nell'XML nativo; le applicazioni non devono combinare xlpsDefault con funzioni personalizzate, e una simile richiesta tipizzata ambigua viene rifiutata prima della mutazione
Più livelli di campo colonna con subtotali, combinazioni non supportate di asse dati compatto, membri compressi e didascalie personalizzate restano fuori da questo contratto di output nativo; campi ed elementi calcolati hanno i propri requisiti più stretti su SUM e identità dei membri, e la preservazione grezza non implica supporto per ricalcolare o materializzare una funzionalità
Salvataggio, riapertura e nuova materializzazione conservano raggruppamenti supportati, ordine degli assi e identità dei subtotali; anche le viste native importate e le cache tipizzate copiate indipendentemente sono state verificate contro Excel sia all'apertura iniziale che all'aggiornamento esplicito
Calcoli di visualizzazione nativi
Imposta ShowDataAs o ExtendedShowDataAs di ogni campo dati ordinario prima di chiamare MaterializeNativePivotTable; le modalità di visualizzazione base ed estese si escludono a vicenda
Le modalità base comprendono differenza, percentuale di un elemento di base, differenza percentuale, totale progressivo, percentuale di riga, colonna o totale complessivo e indice; le modalità estese comprendono percentuali di riga padre, colonna padre e padre selezionato, percentuale cumulativa e ranghi densi crescenti o decrescenti
BaseField è l'indice del campo pivot a base zero per confronti, totali progressivi, percentuali del padre selezionato e ranghi; i confronti usano la posizione a base zero di BaseItem, oppure xlPivotBaseItemPrevious e xlPivotBaseItemNext per i membri visibili adiacenti nell'ordine di visualizzazione effettivo
Le percentuali di riga e colonna padre scelgono il corrispondente campo dell'asse più interno senza usare BaseField; un asse corrispondente mancante lascia quei risultati vuoti
Le percentuali semplici dividono per l'aggregato originale all'ambito pertinente, medie non additive comprese; le percentuali cumulative sommano gli aggregati mostrati dei membri e usano il totale originale dell'asse per un campo base più interno, mentre un campo base più esterno usa la somma sui membri rimanenti corrispondenti, quindi le medie possono superare il 100 percento
I ranghi nativi contano i distinti valori aggregati precedenti, e i confronti preservano il comportamento di Excel per vuoti ed errori in caso di intersezioni assenti, basi mancanti, divisori zero e confini precedente o successivo; le percentuali semplici trattano un numeratore assente come zero
I totali complessivi usano la semantica nativa della modalità selezionata, totali vuoti lungo un asse di confronto o progressione inclusi; cambiare una modalità di visualizzazione conserva i controlli transazionali di proprietà, collisione e budget del report
Salvataggio e riapertura conservano la modalità base o estesa scelta e le identità di base, e i metadati nativi in staging supportano un aggiornamento esplicito di Excel; il Make ordinario e le anteprime senza l'opzione nativa conservano il loro contratto di calcolo esistente
Disponibilità cross-filter dei Slicer
property TXLSXSlicerCache.ItemHasData[Index: Integer]: Boolean;
Questa query in sola lettura valuta i record correnti supportati della cache non-OLAP ignorando la selezione propria di questo Slicer e conservando le selezioni degli altri Slicer, i filtri manuali, i predicati del chiamante e i filtri aggregati applicabili
La disponibilità è l'unione sulle viste collegate; i membri storici senza record corrispondenti non hanno dati, le misure vuote non hanno dati, e le misure di testo non vuoto, Boolean, zero, errore e data contano come dati secondo il contratto nativo verificato
La query usa un lease di lettura e un'anteprima dei record scollegata, preserva handle attivi e selezione, e rispetta FormulaArrayMemoryLimit; fallimenti delle callback, rientranza, binding non validi o membri calcolati aggregati non supportati sollevano un'eccezione senza effettuare il commit delle modifiche attive
Interrogare la disponibilità non aggiorna le cache, non ricalcola formule, non esegue I/O su file e non aggiorna i flag nativi serializzati senza dati; le applicazioni non dovrebbero inferire lo stato della UI nativa da questa operazione in sola lettura
TlxPivotRecordWriter = procedure(ATable: TXLSPivotTable; ARecordIndex: Integer) of object; function TXLSPivotTable.MakeRecordPreview(AWriter: TlxPivotRecordWriter; AFilterOwner: TObject = nil; AFilter: TlxPivotRecordFilter = nil): Integer;
La callback avanzata sui record riceve l'anteprima scollegata e un indice di record a base zero dopo il filtraggio semplice e aggregato supportato; EvaluationSourceTable conserva l'identità della vista originale e il valore restituito è il numero di record emessi
Un filtro sostitutivo sostituisce solo la callback registrata del proprietario fornito; gli altri proprietari e il predicato esterno restano attivi, e una callback sostitutiva non nil richiede un proprietario non nil
Epurazione esplicita dei membri storici
Removed := Workbook.PurgePivotCacheMissingItems(
Pivot.CacheId, 0);
if Removed < 0 then
raise Exception.Create('The cache member purge was rejected');
TXLSXWorkbook.PurgePivotCacheMissingItems(ACacheId: Integer; ARetainMissingItemsPerField: Integer = 0): Integer rimuove i membri inutilizzati dopo validazione completa e rimappatura delle viste e dei Slicer collegati supportati
Restituisce il totale degli shared item rimossi su tutti i campi, zero per un no-op riuscito, o -1 con diagnostica 1402; i record correnti conservano ogni membro referenziato, più al massimo il numero richiesto di membri inutilizzati per campo, scelti per indice di shared item originale più alto
I membri trattenuti conservano il loro ordine relativo originale e gli handle di oggetto mentre gli indici logici diventano compatti; gli handle collegati di campi ed elementi, i flag manuali nascosto e dettaglio, i membri attivi di pagina o confronto e le selezioni dei Slicer conservano le loro identità
I flag e i confini del dominio vengono ricalcolati dal dominio trattenuto; le posizioni compresse importate supportate di riga/colonna e pagina vengono rimappate esplicitamente, mentre i riferimenti fittizi dei totali complessivi e gli ordinali dello pseudo-campo dati restano invariati
Le cache locali ordinarie complete del foglio di lavoro sono supportate; cache raggruppate, calcolate, member-property, OLAP, esterne, incomplete o ambigue e metadati opachi di identità non supportati vengono rifiutati prima della mutazione
La rimozione di un membro attivo di pagina o confronto, di un intero sottoinsieme Slicer selezionato o di un'intersezione effettiva precedentemente non vuota viene rifiutata in modo atomico; anche gli attributi primitivi dei membri che andrebbero persi durante la ricostruzione tipizzata vengono rifiutati
L'estensione nota di proprietà della materializzazione resta invariata perché le sue coordinate e i token tipizzati dei valori non contengono indici di membri della cache; le estensioni opache non correlate non si presumono sicure
L'epurazione non aggiorna i dati della sorgente, non riscrive le celle del report nel foglio, non invoca callback sui record e non applica automaticamente i metadati MissingItemsLimit; l'aggiornamento resta append-only a meno che questa operazione non venga richiesta esplicitamente
Coordinazione avanzata dell'epurazione
TXLSPivotCache._PrepareMissingItemPurge restituisce un TXLSPivotCachePurgePlan opaco; le applicazioni dovrebbero normalmente usare la facciata del workbook così che ogni vista e Slicer collegato sia incluso
MapItem e RemainingItemCount ispezionano la rimappatura della cache, StagePivotField registra un campo collegato e restituisce il suo indice di stage, e MapViewItemPosition ispeziona la mappatura della posizione wire di quel campo; i membri rimossi mappano a -1 e RemovedCount riporta il totale delle rimozioni
Validate controlla schema originale, record, identità di proprietà di campi/elementi e selezioni delle viste in staging; Commit valida di nuovo e trasferisce la proprietà preparata senza allocazioni né callback dopo il primo scambio attivo
Il piano possiede gli snapshot scollegati, tiene privata la sua cache in staging modificabile e non possiede mai gli oggetti originali di cache o vista; tieni in vita quegli originali finché il Destroy del piano non rilascia lo staging, ed effettua il commit di ciascun piano una sola volta
Lo staging di un campo rifiutato esegue il rollback di quella fase, così il piano può essere riusato; le mutazioni non supportate dopo la preparazione vengono rifiutate prima del commit