Sikker Pivot-regnearksmaterialisering
Version 2.384.90 tilføjer isoleret Pivot-evaluering og beskyttet erstatning af regnearksresultater; version 2.384.92 udvider understøttede lokale kilder til definerede navne og tabeller, der opløses ved hvert kald
Materialiser en visning
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 beregner resultater fra den aktuelle cache og placerer dem ved visningens FirstRow og FirstCol; den returnerer 1 ved succes eller -1 for ikke-understøttede kilder, usikre destinationer, evalueringsfejl eller en afvist projektmappemutation
Opdatering og regnearksgenberegning forbliver eksplicitte operationer; vellykket materialisering ugyldiggør beregningsafhængigheder, så kaldere kan genberegne downstream-formler, når det passer
Standardoverloaderen accepterer blanke destinationsceller og uændrede celler, der tidligere var ejet af samme visning; optagede ikke-ejede celler hvor som helst inde i det komplette outputrektangel afviser operationen, inklusive huller, som result writer ikke udfylder
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 eksplicit adoptere eksisterende skalare celler inde i visningens deklarerede tidligere rektangel ved dens første materialisering; den autoriserer ikke erstatning af formler, arraymedlemmer, rich text, metadata-bærende celler eller indhold uden for det rektangel
Ejerskab, størrelsesændring og flytning
Visningen beholder eksakte koordinater og typede værdi-snapshots for skrevne celler; XLSX-gemning bevarer dette ejerskab i Pivot-definitionen, så senere opdateringer kan validere det efter genåbning
Ændret typet indhold eller en fjernet ikke-blank ejet celle afviser hele opdateringen; talsubtyper deler en kanonisk numerisk repræsentation, mens tekst, booleske værdier og fejl beholder adskilte identiteter
Formindskelse eller flytning af et resultat rydder kun uændrede ejede værdier, der ikke længere produceres; eksisterende celelobjekter, formatering og kommentarer forbliver tilgængelige, og urelaterede celler forbliver uden for ejerskabssættet
Ændring af FirstRow eller FirstCol flytter det næste output, mens de tidligere ejerskabskoordinater forbliver tilgængelige til oprydning; et tomt resultat rydder ejede værdier og beholder en kun-anker-placering
Isoleret preview
function TXLSPivotTable.MakePreview(AWriter: TlxPivotResultWriter): Integer; property TXLSPivotTable.EvaluationSourceTable: TXLSPivotTable;
TXLSPivotTable.MakePreview bruger uafhængige kopier af cachen og visningen, inklusive beregnede feltpladsholdere, og kasserer dem efter evaluering; almindelig Make beholder sin eksisterende levende-cache-adfærd
Writeren modtager nulbaserede række- og kolonneoffsets og typede værdier; returværdien følger Makes antal aggregatceller, hvilket er adskilt fra antallet af writer-kald; en manglende cache eller writer returnerer nul, og evaluerings- eller writer-exceptions propagerer
Kalderpostprædikater og registrerede ejerfiltre forbliver aktive i previews, inklusive projektmappens Slicer-selektioner; callbacks modtager den midlertidige evaluerede visning og dens midlertidige cache
TXLSPivotTable.EvaluationSourceTable returnerer den levende visning for en almindelig evaluering og den oprindelige levende visning for et preview; brug den, når et callback skal identificere en tilkoblet visning, mens evaluerede poster læses fra callbackets midlertidige Cache
Callback-ejere forbliver kalder-ejet; preview-objekter og deres poster må ikke tilbageholdes, efter at callbacket eller preview-kaldet slutter
Sikkerhedsgrænser
Materialisering kræver en visning og cache registreret i samme projektmappe samt en understøttet lokal rektangulær, definerede navne- eller tabelkilde; kildeopløsning følger aktuelle navne og tabelomfang, og ikke-understøttede eller uopløste kilder afvises før mutation
Aktuel kildegeometri, andre Pivot-placeringer, strukturerede tabeller, forespørgselsresultatområder, flettede celler samt faste eller dynamiske arrays kan ikke skære det nye output eller gamle ejede celler, der skal ryddes; tabeltotaler forbliver beskyttede, selvom de er udeladt fra cacheposter
Validering og output-staging kører under en læselås efterfulgt af projektmappens almindelige write guard og generationskontrol; et frosset skrivebeskyttet projektmappe-view afviser materialisering uden at erstatte celler eller ændre geometri
Filtre skal være skrivebeskyttede og følge projektmappens almindelige single-writer-kontrakt; isolation forhindrer normale preview-beregninger i at ændre den levende cache, men vilkårlige callback-skrivninger gennem separat indfangede levende objekter kan ikke rulles tilbage
Denne operation materialiserer bibliotekets beregnede resultatlayout; komplet native Pivot-layoutforfatterskab, Slicer-UI-oprettelse og evaluering af krydsfilter no-data-visning forbliver separate funktioner