HotXLS-dokumentation

Inbyggda pivotutdata, korsfilterfrågor och saknade medlemmar

Inbyggd cachad kalkylbladsutmatning

function TXLSXWorkbook.MaterializeNativePivotTable(
  ATable: TXLSPivotTable): Integer;
function TXLSXWorkbook.MaterializeNativePivotTable(
  ATable: TXLSPivotTable; AAdoptExisting: Boolean): Integer;

Åtgärden mellanlagrar både det kompletta inbyggda kompakta, tabellformade eller dispositionsbaserade rapportrutnätet och dess plats-, rowItems-, colItems- och dataaxelmetadata innan kalkylbladsvärden och utdataägarskap engageras tillsammans; den returnerar 1 vid lyckat resultat eller -1 med diagnostik vid tillstånd som inte stöds eller en kollision

Stödda icke-tomma lokala vyer behåller aktuella filter, exakta cachemedlemsidentiteter, vanliga hierarkier, stödda grupperade domäner, standard- eller anpassade delsummor och valfri stödd dataaxel; det inbyggda rutnätet använder ursprungliga aggregeringsvärden i stället för att kombinera om visade medelvärden eller andra icke-additiva resultat

Befintliga cellobjekt och formatering finns kvar, medan krympning eller flytt av rapporten bara rensar oförändrade tidigare ägda värden; redigerade utdata, källöverlapp, sammanslagningar, formler, matriser och andra rapporter avslås innan ändringen

Importerad skalär utdata kräver uttryckligt övertagande med AAdoptExisting=True; efterföljande uppdateringar använder beständigt per-cell-ägarskap, även efter sparande och återöppning

Åtgärden läser aktuella cacheposter och uppdaterar inte källdata eller omberäknar formler; Cache.RefreshOnLoad=False är giltigt eftersom kalkylbladet nu innehåller faktiska mellanlagrade inbyggda resultat

Upringarnas postfiltercallbacks deltar i den fristående förhandsvisningen men har ingen OOXML-representation; Excel:s uttryckliga inbyggda uppdatering kan inte återge godtyckliga callback-begränsningar, medan stödda beständiga manuella filter och Slicer-filter behåller sitt serialiserade format

Stödda beräknade cachefält med SUM och cacheägda beräknade objekt använder kontextsummokontraktet som beskrivs i Inbyggda beräknade pivotfält och cacheägda objekt; anpassade medlemsbildtexter och layoutkombinationer som inte stöds avslås uttryckligen, medan stödd genererad rålayout behåller orelaterad XML och aktuella medlemsmasker

TryXLSXMakeNativePivotLayout(const Xml: WideString; Table: TXLSPivotTable; AWriter: TlxPivotResultWriter; out ResultXml, Reason: WideString): Boolean är hjälparen för mellanlagrad layout på lägre nivå i lxPivotXml

Dess skrivare tar emot hela rapportrektangeln i radordning (row-major), inklusive tomma celler, med nollbaserade offset från tabellankaret; XML- och rutnätpreflight avslutas innan första callbacken, men uppringarägda skrivningar kan inte rullas tillbaka om en callback utlöser ett undantag

Arbetsboksfasaden tillhandahåller en fristående inspelningsskrivare för transaktionella celluppdateringar; den kombinerade mellanlagrade förhandsvisningen och de inbyggda Variant-rutnäten avgränsas till 4194304 celler

Den inbyggda förhandsvisningsvägen kan begära inbyggd totalsummaorientering via den valfria parametern AUseNativeGrandTotals i TXLSPivotTable.MakePreview; befintliga anrop med en enda skrivare och layoutskrivare bevarar sitt tidigare beteende

Layout och upprepade etiketter

Sätt Compact och Outline på rapporten och varje radfält före materialiseringen; tabellformade fält använder båda flaggorna som False, dispositionsfält använder Compact=False och Outline=True, och kompakta fält använder båda flaggorna som True

property TXLSPivotField.RepeatLabels: Boolean;

RepeatLabels är False som standard, kopieras oberoende med fältet och läser eller skriver det inbyggda tillägget x14:pivotField fillDownLabels; det upprepar överordnade etiketter i tabellformad och dispositionsbaserad utdata och har ingen effekt på ett fält där både compact- och outline-flaggorna är aktiverade

Varje separat radfält får sin egen fysiska kolumn, medan intilliggande kompakta dispositionsfält delar en etikettkolumn; flera mått på rader följer CompactData, och flera mått på kolumner behåller oberoende dataetiketter och totalsummor

Standardtabellformade delsummor visas under sin grupp; dispositionens SubtotalTop väljer placering överst eller nederst, medan mått på rader använder separata aggregeringsrader under gruppen och behåller varje måtts bildtext

Inbyggd cachad utdata lämnar frånvarande rad- och kolumnskärningar tomma och bevarar en verklig numerisk nolla; vanlig Make och förhandsvisningar utan det inbyggda alternativet behåller sitt tidigare beteende för tomt resultat

Inaktiva fält och måttfält ärver rapportlayouten i mellanlagrad inbyggd metadata så att Excel:s uttryckliga uppdatering behåller lämpliga fält- och dataetiketter; åtgärden bevarar de aktiva fältinställningarna och befintliga ägarskapskontroller

Importerade tillägg för upprepade etiketter accepterar namnområdesalias, inklusive deklarationer på själva tilläggselementet; okänd orelaterad XML förblir bevarad av den inbyggda materialiseringsvägen

Grupperade medlemmar, axelordning och anpassade delsummor

Inbyggd utdata stöder kompletta numeriska intervallgrupper, datumgrupper och manuella medlemsgrupper som representeras av cachens befintliga typade grupperingsmetadata; genererade etiketter behåller de exakta importerade GroupItemLabels, inklusive Unicode- och lokaliserade datumtexter

Grupperingen utvärderas på en fristående cache, vilket bevarar den aktiva cachens poster, delade objekthandtag och gruppidentiteter; ogiltiga gränser, nollintervall, ofullständiga domäner eller gruppvärdestyper som inte stöds avslås innan kalkylbladsutdata ändras

Den befintliga nollbaserade TXLSPivotField.Position avgör den stabila inbyggda rad- eller kolumnaxelordningen; lika positioner behåller den författade fältordningen, så nyskapade fält med standardpositionen behåller sin tidigare ordning

Inbyggda importerade Year/Month- och förälder-/manuell-medlem-hierarkier behåller sin uttryckliga axelsekvens, medan cache-fältindex, vyfältindex och identiteter för beräkningsbas vid visning förblir oförändrade; manuella grupper respekterar uttrycklig Pivot-objektordning i stället för att sortera gruppetiketter eller cacheindex

Anpassade delsummor på rader stöder xlpsSum, xlpsCount, xlpsAverage, xlpsMax, xlpsMin, xlpsProduct, xlpsCountNumbers, xlpsStdDev, xlpsStdDevP, xlpsVar och xlpsVarP, inklusive flera valda funktioner, tabellformade eller dispositionsfält och mått på rader

Varje funktion aggregerar de ursprungliga källposterna inom sitt eget delsummaskop; dess mellanlagrade radmetadata identifierar den valda funktionen oberoende, vilket bevarar Excel:s uttryckliga uppdateringsbeteende för icke-additiva beräkningar samt tomma eller felaktiga resultat

Ett importerat anpassat delsummorval exkluderar den underförstådda automatiska delsumman även när defaultSubtotal saknas i inbyggd XML; program får inte kombinera xlpsDefault med anpassade funktioner, och en sådan tvetydig typad begäran avslås innan ändringen

Flera kolumnfältsnivåer med delsummor, ostödda kompakta dataaxelkombinationer, komprimerade medlemmar och anpassade bildtexter ligger fortfarande utanför det här inbyggda utdatakontraktet; beräknade fält och objekt har sina egna snävare krav på SUM och medlemsidentitet, och rå bevarande innebär inte stöd för att omberäkna eller materialisera en funktion

Sparande, återöppning och ommaterialisering behåller stödd gruppering, axelordning och delsummaidentiteter; importerade inbyggda vyer och oberoende kopierade typade cacher har också verifierats mot Excel vid både första öppning och uttrycklig uppdatering

Inbyggda visningsberäkningar

Sätt varje vanligt datafälts ShowDataAs eller ExtendedShowDataAs innan MaterializeNativePivotTable anropas; grundläggande och utökade visningslägen utesluter varandra

Grundläggande lägen omfattar differens, procent av ett basobjekt, procentdifferens, löpande total, procent av rad, kolumn eller totalsumma samt index; utökade lägen omfattar förälderad, förälderkolumn och valda förälderprocentsatser, kumulativ procentsats samt stigande eller fallande dense ranks

BaseField är det nollbaserade pivotfältindexet för jämförelser, löpande totaler, valda förälderprocentsatser och rangordningar; jämförelser använder den nollbaserade BaseItem-positionen, eller xlPivotBaseItemPrevious och xlPivotBaseItemNext för intilliggande synliga medlemmar i den effektiva visningsordningen

Procentsatser för förälderad och förälderkolumn väljer motsvarande innersta axelfält utan att använda BaseField; en saknad motsvarande axel lämnar de resultaten tomma

Enkla procentsatser dividerar med den ursprungliga aggregeringen inom relevant omfattning, inklusive icke-additiva medelvärden; kumulativa procentsatser summerar visade medlemsaggregeringar och använder den ursprungliga axelsumman för ett innersta basfält, medan ett yttre basfält använder summan över sina matchande kvarvarande medlemmar, så medelvärden kan överstiga 100 procent

Inbyggda rangordningar räknar åtskilda föregående aggregeringsvärden, och jämförelser bevarar Excel:s beteende för tomma värden och fel vid frånvarande skärningar, saknade baser, nolldelare samt föregående- eller nästa-gränser; enkla procentsatser behandlar en saknad täljare som noll

Totalsummor använder det valda lägets inbyggda semantik, inklusive tomma totaler längs en jämförelse- eller löpande axel; byte av visningsläge behåller rapportens transaktionella ägarskaps-, kollisions- och budgetkontroller

Sparande och återöppning behåller det valda grundläggande eller utökade läget och basidentiteterna, och mellanlagrad inbyggd metadata stöder en uttrycklig Excel-uppdatering; vanlig Make och förhandsvisningar utan det inbyggda alternativet behåller sitt befintliga beräkningskontrakt

Slicer-korsfiltertillgänglighet

property TXLSXSlicerCache.ItemHasData[Index: Integer]: Boolean;

Den här skrivskyddade frågan utvärderar aktuella stödda icke-OLAP-cacheposter medan den ignorerar denna Slicers eget urval och behåller andra Slicer-val, manuella filter, uppringarpredikat och tillämpliga aggregeringsfilter

Tillgängligheten är unionen över anslutna vyer; historiska medlemmar utan matchande poster saknar data, tomma mått saknar data, och icke-tom text, Boolean, nolla, fel och datum räknas som data enligt det verifierade inbyggda kontraktet

Frågan använder ett läslease och fristående postförhandsvisning, bevarar aktiva handtag och urval och respekterar FormulaArrayMemoryLimit; callback-fel, återinträde, ogiltiga bindningar eller ostödda aggregeringsberäknade medlemmar utlöser undantag utan att aktiva ändringar engageras

Att fråga efter tillgänglighet uppdaterar inte cacher, omberäknar inte formler, utför ingen fil-I/O och uppdaterar inte serialiserade inbyggda no-data-flaggor; program bör inte härleda inbyggt UI-tillstånd från den här skrivskyddade åtgärden

TlxPivotRecordWriter = procedure(ATable: TXLSPivotTable;
  ARecordIndex: Integer) of object;
function TXLSPivotTable.MakeRecordPreview(AWriter: TlxPivotRecordWriter;
  AFilterOwner: TObject = nil; AFilter: TlxPivotRecordFilter = nil): Integer;

Den avancerade postcallbacken tar emot den fristående förhandsvisningen och ett nollbaserat postindex efter stödd enkel och aggregerande filtrering; EvaluationSourceTable behåller den ursprungliga vyidentiteten, och returvärdet är antalet utsända poster

Ett ersättningsfilter ersätter bara den angivna ägarens registrerade callback; andra ägare och det externa predikatet förblir aktiva, och ett ersättningscallback som inte är nil kräver en ägare som inte är nil

Uttrycklig rensning av historiska medlemmar

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 tar bort oanvända medlemmar efter fullständig validering och ommappning av stödda länkade vyer och Slicers

Den returnerar totalt antal borttagna delade objekt över alla fält, noll för en lyckad no-op, eller -1 med diagnostiken 1402; aktuella poster behåller varje refererad medlem, plus högst det begärda antalet oanvända medlemmar per fält, valda efter störst ursprungligt delat objektindex

Behållna medlemmar behåller sin ursprungliga relativa ordning och sina objekthandtag medan logiska index komprimeras; länkade fält-/objekthandtag, manuella dold- och detaljflaggor, aktiva sid- eller jämförelsemedlemmar och Slicer-val behåller sina identiteter

Domänflaggor och gränser räknas om från den behållna domänen; stödda importerade komprimerade rad-/kolumn- och sidpositioner mappas om uttryckligen, medan dummyreferenser för totalsumma och ordningstal för datapseudofält förblir oförändrade

Vanliga kompletta lokala kalkylbladscacher stöds; grupperade, beräknade, medlemsegenskaps-, OLAP-, externa, ofullständiga eller tvetydiga cacher samt ogenomskinlig identitetsmetadata som inte stöds avslås innan ändringen

Att ta bort en aktiv sid- eller jämförelsemedlem, en hel vald Slicer-delmängd eller en tidigare icke-tom effektiv skärning avslås atomärt; primitiva medlemsattribut som skulle gå förlorade vid typad ombyggnad avslås också

Det kända materialiseringsägarskapstillägget förblir oförändrat eftersom dess koordinater och typade värdetecken inte innehåller cachemedlemsindex; orelaterade ogenomskinliga tillägg antas inte vara säkra

Rensningen uppdaterar inte källdata, skriver inte om kalkylbladets rapportceller, anropar inte postcallbacks och tillämpar inte MissingItemsLimit-metadata automatiskt; uppdatering förblir enbart-tillägg om inte den här åtgärden uttryckligen begärs

Avancerad rensningskoordinering

TXLSPivotCache._PrepareMissingItemPurge returnerar en ogenomskinlig TXLSPivotCachePurgePlan; program bör normalt använda arbetsboksfasaden så att varje länkad vy och Slicer inkluderas

MapItem och RemainingItemCount inspekterar cacheommappning, StagePivotField registrerar ett länkat fält och returnerar dess mellanlagringsindex, och MapViewItemPosition inspekterar den fältets serialiserade positionsmappning; borttagna medlemmar mappas till -1, och RemovedCount rapporterar totalt antal borttag

Validate kontrollerar ursprungligt schema, poster, identiteter för fält-/objektägarskap och mellanlagrade vyval; Commit validerar igen och överför förberett ägarskap utan allokering eller callbacks efter det första aktiva utbytet

Planen äger fristående ögonblicksbilder, håller sin föränderliga mellanlagrade cache privat och äger aldrig ursprungliga cache- eller vyobjekt; håll de originalen vid liv tills planens Destroy släpper mellanlagringen, och engagera varje plan bara en gång

Avslagen fältmellanlagring rullar tillbaka det steget så att planen kan återanvändas; mutationer som inte stöds efter förberedelsen avslås före committen