Native Pivot-output, krydsfilterforespørgsler og manglende medlemmer
Native cached regnearksoutput
function TXLSXWorkbook.MaterializeNativePivotTable( ATable: TXLSPivotTable): Integer; function TXLSXWorkbook.MaterializeNativePivotTable( ATable: TXLSPivotTable; AAdoptExisting: Boolean): Integer;
Operationen klargør både det komplette native kompakte, tabel- eller outline-rapportnet og dets placering, rowItems, colItems og dataakse-metadata, før regnearksværdier og output-ejerskab committes sammen; den returnerer 1 ved succes eller -1 med en diagnostik ved ikke-understøttet tilstand eller en kollision
Understøttede ikke-tomme lokale visninger beholder aktuelle filtre, eksakte cachemedlemsidentiteter, almindelige hierarkier, understøttede grupperede domæner, standard- eller brugerdefinerede deltotaler og vilkårlig understøttet dataakse; det native grid bruger originale aggregatværdier i stedet for at rekombinere viste gennemsnit eller andre ikke-additive resultater
Eksisterende celelobjekter og formatering forbliver tilgængelige, mens formindskelse eller flytning af rapporten kun rydder uændrede tidligere ejede værdier; redigeret output, kildeoverlap, fletninger, formler, arrays og andre rapporter afvises før mutation
Importeret skalaroutput kræver eksplicit adoption med AAdoptExisting=True; efterfølgende opdateringer bruger persisteret individuelt celleejerskab, også efter gemning og genåbning
Operationen læser aktuelle cacheposter og opdaterer hverken kildedata eller genberegn formler; Cache.RefreshOnLoad=False er gyldigt, fordi regnearket nu indeholder faktiske klargjorte native resultater
Kalderpostfilter-callbacks deltager i det detachede preview men har ingen OOXML-repræsentation; Excels eksplicitte native opdatering kan ikke reproducere vilkårlige callback-begrænsninger, mens understøttede persisterede manuelle og Slicer-filtre beholder deres wire-repræsentation
Understøttede SUM beregnede cachefelter og cache-ejede beregnede elementer bruger kontekstsum-kontrakten beskrevet i Native beregnede Pivotfelter og cache-ejede elementer; brugerdefinerede medlemscaptions og ikke-understøttede layoutkombinationer afvises eksplicit, mens understøttet genereret råt layout beholder urelateret XML og aktuelle medlemsmasker
TryXLSXMakeNativePivotLayout(const Xml: WideString; Table: TXLSPivotTable; AWriter: TlxPivotResultWriter; out ResultXml, Reason: WideString): Boolean er lavniveau klargøringslayout-hjælperen i lxPivotXml
Dens writer modtager hele rapportrektanglet i række-major-rækkefølge, inklusive blanke celler, med nulbaserede offsets fra tabelankret; XML- og grid-preflight fuldføres før det første callback, men kalder-ejede skrivninger kan ikke rulles tilbage, hvis et callback udløser en exception
Projektmappens facade leverer en detached capture-writer til transaktionelle celleopdateringer; det kombinerede klargjorte preview og native Variant-grids er begrænset til 4194304 celler
Den native preview-sti kan anmode om native stortotal-orientering gennem TXLSPivotTable.MakePreviews valgfrie AUseNativeGrandTotals-parameter; eksisterende single-writer- og layout-writer-kald bevarer deres tidligere adfærd
Layout og gentagne etiketter
Sæt Compact og Outline på rapporten og hvert rækkefelt før materialisering; tabelfelter bruger begge flag som False, outline-felter bruger Compact=False og Outline=True, og kompakte felter bruger begge flag som True
property TXLSPivotField.RepeatLabels: Boolean;
RepeatLabels er som standard False, kopieres uafhængigt med feltet og læser eller skriver den native x14:pivotField fillDownLabels-udvidelse; den gentager forældreetiketter i tabel- og outline-output og har ingen effekt på et felt, hvis kompakte og outline-flag begge er aktiveret
Hvert separat rækkefelt får sin egen fysiske kolonne, mens tilstødende kompakte outline-felter deler en etiketkolonne; flere mål på rækker følger CompactData, og flere mål på kolonner beholder uafhængige datacaptions og stortotaler
Standard tabeldeltotaler vises under deres gruppe; outline SubtotalTop vælger top- eller bundplacering, mens mål på rækker bruger separate aggregatrækker under gruppen og beholder hvert måls caption
Native cached output efterlader fraværende række- og kolonneskæringer blanke og bevarer en faktisk numerisk nul; almindelig Make og previews uden native-indstillingen beholder deres tidligere tom-resultat-adfærd
Inaktive og målfelter arver rapportlayoutet i klargjort native metadata, så Excels eksplicitte opdatering beholder de passende felt- og datacaptions; operationen bevarer de levende feltindstillinger og eksisterende ejerskabskontroller
Importerede gentaget-etiket-udvidelser accepterer namespace-aliasser, inklusive deklarationer på udvidelseselementet selv; ukendt urelateret XML forbliver bevaret af native materialiseringsstien
Grupperede medlemmer, akserækkefølge og brugerdefinerede deltotaler
Native output understøtter komplette numeriske intervalgrupper, datogrupper og manuelle medlemsgrupper repræsenteret af cachens eksisterende typede grupperingsmetadata; genererede etiketter beholder de eksakte importerede GroupItemLabels, inklusive Unicode og lokaliserede datecaptions
Gruppering evalueres på en detached cache og bevarer den levende caches poster, delte elementhandles og gruppeidentiteter; ugyldige grænser, nulintervaller, ufuldstændige domæner eller ikke-understøttede gruppeelement-værdityper afvises, før regnearksoutput ændres
Den eksisterende nulbaserede TXLSPivotField.Position afgør den stabile native række- eller kolonneakserækkefølge; lige positioner beholder forfattet felterækkefølge, så nyoprettede felter med standardposition beholder deres tidligere rækkefølge
Native importerede Year/Month- og forælder-/manuel-medlems-hierarkier beholder deres eksplicitte aksesekvens, mens cachefeltindekser, visningsfeltindekser og visningsberegningsbase-identiteter forbliver uændrede; manuelle grupper ærer eksplicit Pivot-elementrækkefølge frem for at sortere gruppeetiketter eller cacheindekser
Brugerdefinerede rækkedeltotaler understøtter xlpsSum, xlpsCount, xlpsAverage, xlpsMax, xlpsMin, xlpsProduct, xlpsCountNumbers, xlpsStdDev, xlpsStdDevP, xlpsVar og xlpsVarP, inklusive flere valgte funktioner, tabelfelter eller outline-felter og mål på rækker
Hver funktion aggregerer de oprindelige kildeposter i sit eget deltotalscope; dens klargjorte rækkemetadata identificerer den valgte funktion uafhængigt og bevarer Excels eksplicitte opdateringsadfærd for ikke-additive beregninger samt tomme eller fejlresultater
En importeret brugerdefineret deltotalvalg udelukker den implicitte automatiske deltotal, selv når defaultSubtotal er fraværende i native XML; applikationer må ikke kombinere xlpsDefault med brugerdefinerede funktioner, og en sådan tvetydig typet anmodning afvises før mutation
Flere kolonnefeltniveauer med deltotaler, ikke-understøttede kompakte dataakse-kombinationer, sammenklappede medlemmer og brugerdefinerede captions forbliver uden for denne native outputkontrakt; beregnede felter og elementer har deres egne snævrere SUM- og medlemsidentitetskrav, og rå bevaring indebærer ikke understøttelse af genberegning eller materialisering af en funktion
Gemning, genåbning og re-materialisering beholder understøttet gruppering, akserækkefølge og deltotal-identiteter; importerede native visninger og uafhængigt kopierede typede caches er også verificeret mod Excel ved både første åbning og eksplicit opdatering
Native visningsberegninger
Sæt hvert almindeligt datafelts ShowDataAs eller ExtendedShowDataAs før kald af MaterializeNativePivotTable; basic- og extended-visningstilstande er gensidigt udelukkende
Basic-tilstande inkluderer differens, procent af et baseelement, procentdifferens, løbende total, procent af række, kolonne eller stortotal samt indeks; extended-tilstande inkluderer forælderrække, forælderkolonne og udvalgte forældreprocenter, kumulativ procentdel samt stigende eller faldende tætte ranger
BaseField er det nulbaserede Pivot-feltindeks til sammenligninger, løbende totaler, udvalgte forældreprocenter og ranger; sammenligninger bruger den nulbaserede BaseItem-position eller xlPivotBaseItemPrevious og xlPivotBaseItemNext for tilstødende synlige medlemmer i den effektive visningsrækkefølge
Forælderrække- og forælderkolonneprocenter vælger det tilsvarende inderste aksefelt uden at bruge BaseField; en manglende tilsvarende akse efterlader de resultater blanke
Enkle procenter dividerer med det oprindelige aggregat i det relevante scope, inklusive ikke-additive gennemsnit; kumulative procenter summerer viste medlemsaggregater og bruger original aksetotal for et inderste basefelt, mens et ydre basefelt bruger summen på tværs af dets matchende resterende medlemmer, så gennemsnit kan overstige 100 procent
Native ranger tæller distinct foregående aggregatværdier, og sammenligninger bevarer Excels blank- og fejladfærd for fraværende skæringer, manglende baser, nuldivisor og forrige/næste-grænser; enkle procenter behandler en fraværende tæller som nul
Stortotaler bruger den valgte tilstands native semantik, inklusive blanke totaler langs en sammenlignings- eller løbende akse; ændring af en visningstilstand beholder rapportens transaktionelle ejerskabs-, kollisions- og budgetkontroller
Gemning og genåbning beholder den valgte basic- eller extended-tilstand og baseidentiteter, og klargjort native metadata understøtter en eksplicit Excel-opdatering; almindelig Make og previews uden native-indstillingen beholder deres eksisterende beregningskontrakt
Slicer krydsfilter-tilgængelighed
property TXLSXSlicerCache.ItemHasData[Index: Integer]: Boolean;
Denne skrivebeskyttede forespørgsel evaluerer aktuelle understøttede ikke-OLAP cacheposter, mens den ignorerer denne Slicers egen selektion og beholder andre Slicer-selektioner, manuelle filtre, kalderprædikater og gældende aggregatfiltre
Tilgængelighed er unionen på tværs af tilkoblede visninger; historiske medlemmer uden matchende poster har ingen data, blanke mål har ingen data, og ikke-tom tekst, booleske værdier, nul, fejl og datomål tæller som data under den verificerede native kontrakt
Forespørgslen bruger en læselås og detached postpreview, bevarer levende handles og selektion og ærer FormulaArrayMemoryLimit; callback-fejl, reentry, ugyldige bindinger eller ikke-understøttede beregnede aggregatmedlemmer udløser en exception uden at committe levende ændringer
At forespørge tilgængelighed opdaterer ikke caches, genberegn ikke formler, udfører ikke fil-I/O og opdaterer ikke serialiserede native no-data-flag; applikationer bør ikke udlede native UI-tilstand fra denne skrivebeskyttede operation
TlxPivotRecordWriter = procedure(ATable: TXLSPivotTable; ARecordIndex: Integer) of object; function TXLSPivotTable.MakeRecordPreview(AWriter: TlxPivotRecordWriter; AFilterOwner: TObject = nil; AFilter: TlxPivotRecordFilter = nil): Integer;
Den avancerede post-callback modtager det detachede preview og et nulbaseret postindeks efter understøttet simpel og aggregatfiltrering; EvaluationSourceTable beholder den oprindelige visningsidentitet, og returværdien er antallet af udsendte poster
Et erstatningsfilter substituerer kun den leverede ejers registrerede callback; andre ejere og det eksterne prædikat forbliver aktive, og et ikke-nil erstatnings-callback kræver en ikke-nil ejer
Eksplicit oprydning i historiske medlemmer
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 fjerner ubrugte medlemmer efter komplet validering og remapping af understøttede kædede visninger og Slicers
Den returnerer det samlede antal fjernede delte elementer på tværs af alle felter, nul for en vellykket no-op eller -1 med diagnostik 1402; aktuelle poster beholder hvert refereret medlem plus højst det anmodede antal ubrugte medlemmer pr. felt valgt efter største oprindelige delte elementindeks
Tilbageholdte medlemmer beholder deres oprindelige relative rækkefølge og objekthandles, mens logiske indekser komprimeres; kædede felt/elementhandles, manuelle skjulte og detaljeflag, aktive side- eller sammenligningsmedlemmer og Slicer-selektioner beholder deres identiteter
Domæneflag og -grænser genberegnes ud fra det tilbageholdte domæne; understøttede importerede komprimerede række-/kolonne- og sidepositioner remappes eksplicit, mens stortotal-dummy-referencer og data pseudofelt-ordinaler forbliver uændrede
Almindelige komplette lokale regnearkscaches understøttes; grupperede, beregnede, member-property-, OLAP-, eksterne, ufuldstændige eller tvetydige caches og ikke-understøttet ugennemsigtig identitetsmetadata afvises før mutation
Fjernelse af et aktivt side- eller sammenligningsmedlem, et helt valgt Slicer-undersæt eller en tidligere ikke-tom effektiv skæring afvises atomært; primitive medlemsattributter, der ville gå tabt under typet genopbygning, afvises også
Den kendte materialiserings-ejerskabsudvidelse forbliver uændret, fordi dens koordinater og typede værdi-tokens ikke indeholder cachemedlemsindekser; urelaterede ugennemsigtige udvidelser antages ikke at være sikre
Oprydning opdaterer ikke kildedata, omskriver ikke regnearksrapportceller, kalder ikke post-callbacks eller anvender MissingItemsLimit-metadata automatisk; opdatering forbliver kun-tilføjende, medmindre denne operation eksplicit anmodes
Avanceret oprydningskoordinering
TXLSPivotCache._PrepareMissingItemPurge returnerer en ugennemsigtig TXLSPivotCachePurgePlan; applikationer bør normalt bruge projektmappens facade, så alle kædede visninger og Slicers inkluderes
MapItem og RemainingItemCount inspicerer cache-remapping, StagePivotField registrerer et kædet felt og returnerer dets stage-indeks, og MapViewItemPosition inspicerer feltets wire-position-mapping; fjernede medlemmer mapper til -1, og RemovedCount rapporterer det samlede fjernelsestal
Validate tjekker oprindeligt skema, poster, felt/element-ejerskabsidentiteter og klargjorte visningsselektioner; Commit validerer igen og overfører forberedt ejerskab uden allokering eller callbacks efter den første levende udveksling
Planen ejer detachede snapshots, holder sin muterbare klargjorte cache privat og ejer aldrig originale cache- eller visningsobjekter; hold originalerne i live, til planens Destroy frigør staging, og commit hver plan kun én gang
Afvist feltstaging ruller det stage tilbage, så planen kan genbruges; ikke-understøttede mutationer efter forberedelse afvises før commit