HotXLS-Dokumentation

Native Pivot-Ausgabe, Cross-Filter-Abfragen und fehlende Member

Native gecachte Arbeitsblattausgabe

function TXLSXWorkbook.MaterializeNativePivotTable(
  ATable: TXLSPivotTable): Integer;
function TXLSXWorkbook.MaterializeNativePivotTable(
  ATable: TXLSPivotTable; AAdoptExisting: Boolean): Integer;

Die Operation stagt sowohl das vollständige native kompakte, tabellarische oder Gliederungs-Berichtsraster als auch seine Position, rowItems, colItems und Datenachsen-Metadaten, bevor Arbeitsblattwerte und Ausgabe-Besitz gemeinsam committet werden; sie liefert 1 bei Erfolg oder -1 mit einer Diagnose bei nicht unterstütztem Zustand oder einer Kollision

Unterstützte nichtleere lokale Views behalten aktuelle Filter, exakte Cache-Member-Identitäten, gewöhnliche Hierarchien, unterstützte gruppierte Domänen, Standard- oder benutzerdefinierte Teilsummen und jede der beiden unterstützten Datenachsen; das native Raster nutzt ursprüngliche Aggregatwerte, statt angezeigte Durchschnitte oder andere nichtadditive Ergebnisse neu zu kombinieren

Bestehende Zellobjekte und Formatierung bleiben verfügbar, während das Schrumpfen oder Verschieben des Berichts nur unveränderte zuvor eigene Werte räumt; bearbeitete Ausgabe, Quellüberlappung, verbundene Zellen, Formeln, Arrays und andere Berichte weisen vor der Veränderung zurück

Importierte skalare Ausgabe erfordert explizite Übernahme mit AAdoptExisting=True; nachfolgende Updates nutzen persistierten Einzelzellen-Besitz, auch nach Speichern und Neuöffnen

Die Operation liest aktuelle Cache-Records und aktualisiert weder Quelldaten noch berechnet sie Formeln neu; Cache.RefreshOnLoad=False ist gültig, weil das Arbeitsblatt jetzt tatsächlich gestagte native Ergebnisse enthält

Aufrufer-Record-Filter-Callbacks nehmen an der abgekoppelten Vorschau teil, haben aber keine OOXML-Repräsentation; Excels explizite native Aktualisierung kann beliebige Callback-Einschränkungen nicht reproduzieren, während unterstützte persistierte manuelle und Slicer-Filter ihre Wire-Repräsentation behalten

Unterstützte SUM-berechnete Cache-Felder und cache-eigene berechnete Elemente nutzen den unter Native berechnete Pivot-Felder und cache-eigene Elemente beschriebenen Kontextsummen-Kontrakt; eigene Member-Beschriftungen und nicht unterstützte Layoutkombinationen weisen explizit zurück, während unterstütztes generiertes Raw-Layout nicht verwandtes XML und aktuelle Member-Masken behält

TryXLSXMakeNativePivotLayout(const Xml: WideString; Table: TXLSPivotTable; AWriter: TlxPivotResultWriter; out ResultXml, Reason: WideString): Boolean ist der niedrigere gestagte Layout-Helper in lxPivotXml

Sein Writer erhält das gesamte Berichtsrechteck in Row-major-Reihenfolge, einschließlich leerer Zellen, mit nullbasierten Offsets vom Tabellenanker; XML- und Raster-Preflight enden vor dem ersten Callback, aber aufruferbesessene Schreibvorgänge können nicht zurückgerollt werden, wenn ein Callback auslöst

Die Arbeitsmappen-Fassade liefert einen abgekoppelten Capture-Writer für transaktionale Zellupdates; die kombinierten gestagten Vorschau- und nativen Variant-Raster sind auf 4194304 Zellen begrenzt

Der native Vorschau-Pfad kann über den optionalen AUseNativeGrandTotals-Parameter von TXLSPivotTable.MakePreview eine native Gesamtergebnis-Orientierung anfordern; bestehende Single-Writer- und Layout-Writer-Aufrufe behalten ihr bisheriges Verhalten

Layout und wiederholte Beschriftungen

Setzen Sie Compact und Outline am Bericht und an jedem Zeilenfeld vor der Materialisierung; tabellarische Felder nutzen beide Flags als False, Gliederungsfelder nutzen Compact=False und Outline=True, und kompakte Felder nutzen beide Flags als True

property TXLSPivotField.RepeatLabels: Boolean;

RepeatLabels steht standardmäßig auf False, kopiert unabhängig mit dem Feld und liest oder schreibt die native x14:pivotField fillDownLabels-Erweiterung; es wiederholt Elternbeschriftungen in tabellarischer und Gliederungsausgabe und hat keine Wirkung auf ein Feld, dessen Compact- und Outline-Flags beide aktiviert sind

Jedes separate Zeilenfeld erhält seine eigene physische Spalte, während benachbarte kompakte Gliederungsfelder eine Beschriftungsspalte teilen; mehrere Measures auf Zeilen folgen CompactData, und mehrere Measures auf Spalten behalten unabhängige Datenbeschriftungen und Gesamtergebnisse

Standardmäßige tabellarische Teilsummen erscheinen unterhalb ihrer Gruppe; Gliederungs-SubtotalTop wählt die Position oben oder unten, während Measures auf Zeilen separate Aggregatzeilen unterhalb der Gruppe nutzen und die Beschriftung jedes Measures behalten

Native gecachte Ausgabe lässt fehlende Zeilen- und Spaltenschnittpunkte leer und bewahrt eine echte numerische null; gewöhnliches Make und Vorschauen ohne die native Option behalten ihr bisheriges Verhalten für leere Ergebnisse

Inaktive und Measure-Felder erben das Berichtslayout in gestagten nativen Metadaten, sodass Excels explizite Aktualisierung die passenden Feld- und Datenbeschriftungen behält; die Operation bewahrt die lebenden Feldeinstellungen und bestehende Besitzprüfungen

Importierte wiederholte Beschriftungs-Erweiterungen akzeptieren Namespace-Aliase, einschließlich Deklarationen auf dem Erweiterungselement selbst; unbekanntes, nicht verwandtes XML bleibt vom nativen Materialisierungspfad erhalten

Gruppierte Member, Achsenreihenfolge und benutzerdefinierte Teilsummen

Native Ausgabe unterstützt vollständige numerische Bereichsgruppen, Datumsgruppen und manuelle Membergruppen, die von den bestehenden typisierten Gruppierungsmetadaten des Caches repräsentiert werden; generierte Beschriftungen behalten die exakten importierten GroupItemLabels, einschließlich Unicode und lokalisierter Datumsbeschriftungen

Die Gruppierung wird auf einem abgekoppelten Cache ausgewertet und bewahrt dabei die Records, Shared-Item-Handles und Gruppenidentitäten des lebenden Caches; ungültige Grenzen, Nullintervalle, unvollständige Domänen oder nicht unterstützte Gruppen-Elementwerttypen weisen zurück, bevor sich die Arbeitsblattausgabe ändert

Die bestehende nullbasierte TXLSPivotField.Position bestimmt die stabile native Zeilen- oder Spaltenachsenreihenfolge; gleiche Positionen behalten die verfasste Feldreihenfolge, sodass neu erzeugte Felder mit Standardposition ihre bisherige Anordnung behalten

Nativ importierte Jahr/Monat- und Eltern-/manuelle Member-Hierarchien behalten ihre explizite Achsenfolge, während Cache-Feldindizes, View-Feldindizes und die Basisidentitäten der Anzeigeberechnung unverändert bleiben; manuelle Gruppen beachten die explizite Pivot-Elementreihenfolge, statt Gruppenbeschriftungen oder Cache-Indizes zu sortieren

Benutzerdefinierte Zeilenteilsummen unterstützen xlpsSum, xlpsCount, xlpsAverage, xlpsMax, xlpsMin, xlpsProduct, xlpsCountNumbers, xlpsStdDev, xlpsStdDevP, xlpsVar und xlpsVarP, einschließlich mehrerer ausgewählter Funktionen, tabellarischer oder Gliederungsfelder und Measures auf Zeilen

Jede Funktion aggregiert die ursprünglichen Quellrecords in ihrem eigenen Teilsummen-Scope; ihre gestagten Zeilenmetadaten identifizieren die gewählte Funktion unabhängig und bewahren so Excels explizites Aktualisierungsverhalten für nichtadditive Berechnungen sowie leere oder fehlerhafte Ergebnisse

Eine importierte benutzerdefinierte Teilsummenauswahl schließt die implizite automatische Teilsumme aus, selbst wenn defaultSubtotal im nativen XML fehlt; Anwendungen dürfen xlpsDefault nicht mit benutzerdefinierten Funktionen kombinieren, und eine solche mehrdeutige typisierte Anfrage weist vor der Veränderung zurück

Mehrere Spaltenfeldebenen mit Teilsummen, nicht unterstützte kompakte Datenachsen-Kombinationen, eingeklappte Member und eigene Beschriftungen bleiben außerhalb dieses nativen Ausgabekontrakts; berechnete Felder und Elemente haben ihre eigenen engeren SUM- und Member-Identitätsanforderungen, und Raw-Erhaltung impliziert keine Unterstützung für das Neuberechnen oder Materialisieren eines Features

Speichern, Neuöffnen und erneutes Materialisieren behalten unterstützte Gruppierung, Achsenreihenfolge und Teilsummenidentitäten; importierte native Views und unabhängig kopierte typisierte Caches wurden sowohl beim ersten Öffnen als auch bei der expliziten Aktualisierung gegen Excel verifiziert

Native Anzeigeberechnungen

Setzen Sie ShowDataAs oder ExtendedShowDataAs jedes gewöhnlichen Datenfelds, bevor Sie MaterializeNativePivotTable aufrufen; basische und erweiterte Anzeigemodi schließen sich gegenseitig aus

Basische Modi umfassen Differenz, Prozent eines Basiselements, Prozentdifferenz, laufende Summe, Prozent der Zeile, Spalte oder des Gesamtergebnisses sowie Index; erweiterte Modi umfassen Elternzeile, Elternspalte und gewählte Elternprozentsätze, kumulativen Prozentsatz sowie auf- oder absteigende dichte Ränge

BaseField ist der nullbasierte Pivot-Feldindex für Vergleiche, laufende Summen, gewählte Elternprozentsätze und Ränge; Vergleiche nutzen die nullbasierte BaseItem-Position oder xlPivotBaseItemPrevious und xlPivotBaseItemNext für benachbarte sichtbare Member in der effektiven Anzeigereihenfolge

Elternzeilen- und Elternspaltenprozentsätze wählen das entsprechende innerste Achsenfeld, ohne BaseField zu nutzen; eine fehlende passende Achse lässt diese Ergebnisse leer

Einfache Prozentsätze dividieren durch das ursprüngliche Aggregat im relevanten Scope, einschließlich nichtadditiver Durchschnitte; kumulative Prozentsätze summieren angezeigte Member-Aggregate und nutzen die ursprüngliche Achsensumme für ein innerstes Basisfeld, während ein äußeres Basisfeld die Summe über seine passenden verbleibenden Member nutzt, sodass Durchschnitte 100 Prozent überschreiten können

Native Ränge zählen unterschiedliche vorangehende Aggregatwerte, und Vergleiche bewahren Excels Verhalten für leere Werte und Fehler bei fehlenden Schnittpunkten, fehlenden Basen, Nulldividenden sowie vorherigen oder nächsten Grenzen; einfache Prozentsätze behandeln einen fehlenden Zähler als null

Gesamtergebnisse nutzen die native Semantik des gewählten Modus, einschließlich leerer Summen entlang einer Vergleichs- oder Laufsummenachse; das Ändern eines Anzeigemodus behält die transaktionalen Besitz-, Kollisions- und Budgetprüfungen des Berichts

Speichern und Neuöffnen behalten den gewählten basischen oder erweiterten Modus und die Basisidentitäten, und gestagte native Metadaten unterstützen eine explizite Excel-Aktualisierung; gewöhnliches Make und Vorschauen ohne die native Option behalten ihren bestehenden Berechnungskontrakt

Slicer-Cross-Filter-Verfügbarkeit

property TXLSXSlicerCache.ItemHasData[Index: Integer]: Boolean;

Diese nur lesende Abfrage wertet aktuelle unterstützte nicht-OLAP-Cache-Records aus, ignoriert dabei die eigene Auswahl dieses Slicers und behält andere Slicer-Auswahlen, manuelle Filter, Aufrufer-Prädikate und anwendbare Aggregatfilter

Verfügbarkeit ist die Vereinigung über verbundene Views; historische Member ohne passende Records haben keine Daten, leere Measures haben keine Daten, und nichtleere Text-, Boolean-, null-, Fehler- und Datum-Measures zählen gemäß dem verifizierten nativen Kontrakt als Daten

Die Abfrage nutzt eine Lese-Lease und eine abgekoppelte Record-Vorschau, bewahrt lebende Handles und die Auswahl und beachtet FormulaArrayMemoryLimit; Callback-Fehler, Wiedereintritt, ungültige Bindungen oder nicht unterstützte Aggregat-Member lösen aus, ohne lebende Änderungen zu committen

Das Abfragen der Verfügbarkeit aktualisiert keine Caches, berechnet keine Formeln neu, führt keine Datei-I/O durch und aktualisiert keine serialisierten nativen No-Data-Flags; Anwendungen sollten den nativen UI-Zustand nicht aus dieser nur lesenden Operation ableiten

TlxPivotRecordWriter = procedure(ATable: TXLSPivotTable;
  ARecordIndex: Integer) of object;
function TXLSPivotTable.MakeRecordPreview(AWriter: TlxPivotRecordWriter;
  AFilterOwner: TObject = nil; AFilter: TlxPivotRecordFilter = nil): Integer;

Der erweiterte Record-Callback erhält die abgekoppelte Vorschau und einen nullbasierten Record-Index nach unterstützter einfacher und Aggregatfilterung; EvaluationSourceTable behält die ursprüngliche View-Identität, und der Rückgabewert ist die Anzahl der emittierten Records

Ein Ersatzfilter substituiert nur den registrierten Callback des gelieferten Besitzers; andere Besitzer und das externe Prädikat bleiben aktiv, und ein Nicht-nil-Ersatzcallback erfordert einen Nicht-nil-Besitzer

Explizites Bereinigen historischer Member

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 entfernt ungenutzte Member nach vollständiger Validierung und Umordnung unterstützter verknüpfter Views und Slicer

Es liefert die Gesamtanzahl entfernter gemeinsamer Elemente über alle Felder, null für eine erfolgreiche No-op-Operation oder -1 mit Diagnose 1402; aktuelle Records behalten jedes referenzierte Member plus höchstens die angeforderte Anzahl ungenutzter Member pro Feld, gewählt nach größtem ursprünglichen Shared-Item-Index

Behaltene Member behalten ihre ursprüngliche relative Reihenfolge und Objekt-Handles, während logische Indizes verdichtet werden; verknüpfte Feld-/Element-Handles, manuelle versteckte und Detail-Flags, aktive Seiten- oder Vergleichsmember und Slicer-Auswahlen behalten ihre Identitäten

Domänen-Flags und -grenzen werden aus der behaltenen Domäne neu berechnet; unterstützte importierte komprimierte Zeilen-/Spalten- und Seitenpositionen werden explizit umgeordnet, während Gesamtergebnis-Dummy-Referenzen und Daten-Pseudo-Feld-Ordinals unverändert bleiben

Gewöhnliche vollständige lokale Arbeitsblatt-Caches werden unterstützt; gruppierte, berechnete, Member-Property-, OLAP-, externe, unvollständige oder mehrdeutige Caches und nicht unterstützte opake Identitätsmetadaten weisen vor der Veränderung zurück

Das Entfernen eines aktiven Seiten- oder Vergleichsmembers, einer gesamten ausgewählten Slicer-Teilmenge oder einer zuvor nichtleeren effektiven Schnittmenge weist atomar zurück; primitive Memberattribute, die bei typisiertem Wiederaufbau verloren gingen, weisen ebenfalls zurück

Die bekannte Materialisierungs-Besitzerweiterung bleibt unverändert, weil ihre Koordinaten und typisierten Werttokens keine Cache-Member-Indizes enthalten; nicht verwandte opake Erweiterungen werden nicht als sicher angenommen

Das Bereinigen aktualisiert keine Quelldaten, schreibt keine Arbeitsblatt-Berichtzellen um, ruft keine Record-Callbacks auf und wendet MissingItemsLimit-Metadaten nicht automatisch an; die Aktualisierung bleibt append-only, sofern diese Operation nicht explizit angefordert wird

Erweiterte Bereinigungskoordination

TXLSPivotCache._PrepareMissingItemPurge liefert einen opaken TXLSPivotCachePurgePlan; Anwendungen sollten normalerweise die Arbeitsmappen-Fassade nutzen, damit jede verknüpfte View und jeder Slicer einbezogen wird

MapItem und RemainingItemCount inspizieren die Cache-Umordnung, StagePivotField registriert ein verknüpftes Feld und liefert seinen Stage-Index, und MapViewItemPosition inspiziert das Wire-Positionsmapping dieses Felds; entfernte Member mappen auf -1, und RemovedCount meldet die Gesamtanzahl der Entfernungen

Validate prüft ursprüngliches Schema, Records, Feld-/Element-Besitzidentitäten und gestagte View-Auswahlen; Commit validiert erneut und überträgt vorbereiteten Besitz ohne Allokation oder Callbacks nach dem ersten lebenden Austausch

Der Plan besitzt abgekoppelte Snapshots, hält seinen veränderlichen gestagten Cache privat und besitzt nie ursprüngliche Cache- oder View-Objekte; halten Sie diese Originale am Leben, bis der Destroy des Plans das Staging freigibt, und committen Sie jeden Plan nur einmal

Eine zurückgewiesene Feldstaging rollt diese Stufe zurück, sodass der Plan wiederverwendet werden kann; nicht unterstützte Veränderungen nach der Vorbereitung weisen vor dem Commit zurück