HotXLS-Dokumentation

Sichere Pivot-Arbeitsblatt-Materialisierung

Version 2.384.90 ergänzt isolierte Pivot-Auswertung und geschützten Ersatz von Arbeitsblattergebnissen; Version 2.384.92 erweitert die unterstützten lokalen Quellen um definierte Namen und Tabellen, die bei jedem Aufruf aufgelöst werden

Eine View materialisieren

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 berechnet Ergebnisse aus dem aktuellen Cache und platziert sie an der FirstRow- und FirstCol-Position der View; es liefert 1 bei Erfolg oder -1 bei nicht unterstützten Quellen, unsicheren Zielen, Auswertungsfehlern oder einer zurückgewiesenen Arbeitsmappenveränderung

Aktualisierung und Arbeitsblattneuberechnung bleiben explizite Operationen; erfolgreiche Materialisierung invalidiert Berechnungsabhängigkeiten, sodass Aufrufer nachgelagerte Formeln bei Bedarf neu berechnen können

Die Standardüberladung akzeptiert leere Zielzellen und unveränderte Zellen, die zuvor derselben View gehörten; belegte, nicht eigene Zellen irgendwo innerhalb des vollständigen Ausgaberechtecks weisen die Operation zurück, einschließlich Lücken, die der Result Writer nicht füllt

if Workbook.MaterializePivotTable(Pivot, True) <> 1 then
  raise Exception.Create('Existing Pivot values cannot be adopted safely');

TXLSXWorkbook.MaterializePivotTable(ATable: TXLSPivotTable; AAdoptExisting: Boolean): Integer kann bei seiner ersten Materialisierung explizit vorhandene skalare Zellen innerhalb des deklarierten vorherigen Rechtecks der View übernehmen; es autorisiert nicht das Ersetzen von Formeln, Array-Membern, Rich Text, Metadaten-tragenden Zellen oder Inhalten außerhalb dieses Rechtecks

Besitz, Größenänderung und Verschiebung

Die View behält exakte Koordinaten und typisierte Wert-Snapshots für geschriebene Zellen; das XLSX-Speichern bewahrt diesen Besitz in der Pivot-Definition, sodass spätere Updates ihn nach dem Neuöffnen validieren können

Geänderter typisierter Inhalt oder eine entfernte nichtleere eigene Zelle weist das gesamte Update zurück; Zahl-Subtypen teilen eine kanonische numerische Repräsentation, während Text, Boolean-Werte und Fehler unterschiedliche Identitäten behalten

Schrumpfen oder Verschieben eines Ergebnisses räumt nur unveränderte eigene Werte ab, die nicht mehr erzeugt werden; bestehende Zellobjekte, Formatierung und Kommentare bleiben verfügbar, und nicht verwandte Zellen bleiben außerhalb der Besitzmenge

Das Ändern von FirstRow oder FirstCol verschiebt die nächste Ausgabe, während die vorherigen Besitzkoordinaten für Aufräumarbeiten verfügbar bleiben; ein leeres Ergebnis räumt eigene Werte ab und behält eine reine Ankerposition

Isolierte Vorschau

function TXLSPivotTable.MakePreview(AWriter: TlxPivotResultWriter): Integer;
property TXLSPivotTable.EvaluationSourceTable: TXLSPivotTable;

TXLSPivotTable.MakePreview nutzt unabhängige Kopien von Cache und View, einschließlich berechneter Feld-Platzhalter, und verwirft sie nach der Auswertung; gewöhnliches Make behält sein bestehendes Live-Cache-Verhalten

Der Writer erhält nullbasierte Zeilen- und Spalten-Offsets sowie typisierte Werte; der Rückgabewert folgt der Aggregatzellanzahl von Make, die von der Anzahl der Writer-Aufrufe getrennt ist; ein fehlender Cache oder Writer liefert null, und Auswertungs- oder Writer-Exceptions propagieren

Aufrufer-Record-Prädikate und registrierte Besitzerfilter bleiben in Vorschauen aktiv, einschließlich Arbeitsmappen-Slicer-Auswahlen; Callbacks erhalten die temporäre ausgewertete View und ihren temporären Cache

TXLSPivotTable.EvaluationSourceTable liefert die lebende View für eine gewöhnliche Auswertung und die ursprüngliche lebende View für eine Vorschau; verwenden Sie es, wenn ein Callback eine verbundene View identifizieren muss, während Sie die ausgewerteten Records aus dem temporären Cache des Callbacks lesen

Callback-Besitzer bleiben aufruferbesessen; Vorschauobjekte und ihre Records dürfen nach dem Ende des Callbacks oder Vorschauaufrufs nicht zurückgehalten werden

Sicherheitsgrenzen

Materialisierung erfordert eine View und einen Cache, die in derselben Arbeitsmappe registriert sind, sowie eine unterstützte lokale rechteckige Quelle, einen definierten Namen oder eine Tabelle; die Quellauflösung folgt aktuellen Namen und Tabellenausdehnungen, und nicht unterstützte oder unaufgelöste Quellen weisen vor der Veränderung zurück

Aktuelle Quellgeometrie, andere Pivot-Positionen, strukturierte Tabellen, Abfrageergebnisbereiche, verbundene Zellen sowie feste oder dynamische Arrays dürfen weder mit der neuen Ausgabe noch mit alten eigenen Zellen, die geräumt werden müssen, überlappen; Tabellenergebniszeilen bleiben geschützt, obwohl sie aus Cache-Records ausgeschlossen sind

Validierung und Ausgabestaging laufen unter einer Lese-Lease, gefolgt vom normalen Arbeitsmappen-Änderungsschutz und der Generierungsprüfung; eine eingefrorene Nur-Lese-Arbeitsmappenview weist Materialisierung zurück, ohne Zellen zu ersetzen oder Geometrie zu ändern

Filter müssen nur lesend sein und dem gewöhnlichen Single-Writer-Kontrakt der Arbeitsmappe folgen; Isolation verhindert, dass normale Vorschau-Berechnungen den lebenden Cache ändern, aber beliebige Callback-Schreibvorgänge über separat erfasste lebende Objekte können nicht zurückgerollt werden

Diese Operation materialisiert das berechnete Ergebnislayout der Bibliothek; vollständige native Pivot-Layout-Autorenschaft, Slicer-UI-Erzeugung und Cross-Filter-No-Data-Anzeigeauswertung bleiben separate Fähigkeiten