HotXLS-dokumentation

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