HotXLS-documentatie

Veilige Pivot-materialisatie in werkbladen

Versie 2.384.90 voegt geïsoleerde Pivot-evaluatie en bewaakte vervanging van werkbladresultaten toe; versie 2.384.92 breidt ondersteunde lokale bronnen uit naar gedefinieerde namen en tabellen die bij elke aanroep worden opgelost

Een weergave materialiseren

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 berekent resultaten uit de actuele cache en plaatst ze op de FirstRow en FirstCol van de weergave; het geeft 1 terug bij succes of -1 bij niet-ondersteunde bronnen, onveilige bestemmingen, een evaluatiefout of een geweigerde werkmapmutatie

Vernieuwen en herberekenen van het werkblad blijven expliciete bewerkingen; geslaagde materialisatie maakt berekeningsafhankelijkheden ongeldig zodat aanroepers benedenstroomse formules kunnen herberekenen wanneer dat passend is

De standaardoverload accepteert lege bestemmingscellen en onveranderde cellen die eerder door dezelfde weergave waren beheerd; bezette cellen zonder eigenaar ergens binnen de volledige uitvoerrechthoek weigeren de bewerking, inclusief gaten die de resultaatwriter niet vult

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

TXLSXWorkbook.MaterializePivotTable(ATable: TXLSPivotTable; AAdoptExisting: Boolean): Integer kan bij de eerste materialisatie expliciet bestaande scalaire cellen binnen de eerder gedeclareerde rechthoek van de weergave overnemen; het staat niet toe formules, arrayleden, rich text, cellen met metadata of inhoud buiten die rechthoek te vervangen

Eigendom, hersizing en verplaatsing

De weergave bewaart exacte coördinaten en getypeerde waarden-snapshots van geschreven cellen; XLSX-opslag bewaart dit eigendom in de Pivot-definitie, zodat latere updates het na heropenen kunnen valideren

Gewijzigde getypeerde inhoud of een verwijderde niet-lege beheerde cel weigert de volledige update; nummersubtypes delen een canonieke numerieke representatie, terwijl tekst, Boolean-waarden en fouten onderscheiden identiteiten houden

Krimpen of verplaatsen van een resultaat wist alleen onveranderde beheerde waarden die niet langer worden geproduceerd; bestaande celobjecten, opmaak en opmerkingen blijven beschikbaar, en niet-gerelateerde cellen blijven buiten de eigendomsset

Het wijzigen van FirstRow of FirstCol verplaatst de volgende uitvoer terwijl de vorige eigendomscoördinaten beschikbaar blijven voor opschoning; een leeg resultaat wist beheerde waarden en houdt een alleen-anker-locatie vast

Geïsoleerde preview

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

TXLSPivotTable.MakePreview gebruikt onafhankelijke kopieën van cache en weergave, inclusief berekende-veld-placeholders, en gooit ze na evaluatie weg; gewone Make houdt zijn bestaande live-cachegedrag aan

De writer ontvangt zero-based rij- en kolomoffsets en getypeerde waarden; de teruggegeven waarde volgt het aantal aggregaatcellen van Make, wat losstaat van het aantal writer-aanroepen; een ontbrekende cache of writer geeft nul terug, en evaluatie- of writer-exceptions propageren

Recordpredicaten van de aanroeper en geregistreerde eigenaarsfilters blijven actief in previews, inclusief Slicer-selecties van de werkmap; callbacks ontvangen de tijdelijke geëvalueerde weergave en zijn tijdelijke cache

TXLSPivotTable.EvaluationSourceTable geeft de live weergave terug bij een gewone evaluatie en de oorspronkelijke live weergave bij een preview; gebruik het wanneer een callback een gekoppelde weergave moet identificeren, terwijl je geëvalueerde records leest uit de tijdelijke Cache van de callback

Callback-eigenaren blijven eigendom van de aanroeper; preview-objecten en hun records mogen niet worden vastgehouden nadat de callback of preview-aanroep eindigt

Veiligheidsgrenzen

Materialisatie vereist een weergave en cache die in dezelfde werkmap zijn geregistreerd en een ondersteunde lokale rechthoekige, gedefinieerde-naam- of tabelbron; bronresolutie volgt actuele namen en tabelgrenzen, en niet-ondersteunde of onopgeloste bronnen worden geweigerd vóór mutatie

Actuele bron-geometrie, andere Pivot-locaties, gestructureerde tabellen, queryresultaatbereiken, samengevoegde cellen en vaste of dynamische arrays mogen de nieuwe uitvoer of oude beheerde cellen die gewist moeten worden niet overlappen; tabeltotalen blijven beschermd, ook al worden ze uit cacherecords gehouden

Validatie en uitvoerstaging draaien onder een leeslease, gevolgd door de normale werkmapmutatiebewaking en generatiecontrole; een bevroren alleen-lezen werkmapweergave weigert materialisatie zonder cellen te vervangen of geometrie te wijzigen

Filters mogen alleen-lezen zijn en moeten het gewone single-writer-contract van de werkmap volgen; isolatie voorkomt dat normale preview-berekeningen de live cache wijzigen, maar willekeurige callback-schrijfacties via apart vastgehouden live objecten kunnen niet worden teruggedraaid

Deze bewerking materialiseert de berekende resultaatlayout van de library; volledige native Pivot-layout-auteurwerk, Slicer-UI-aanmaak en evaluatie van cross-filter-weergave zonder data blijven aparte mogelijkheden