HotXLS-documentatie

Native Pivot-uitvoer, cross-filter-query's en ontbrekende leden

Native gegroepeerde werkbladuitvoer

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

De bewerking zet zowel het volledige native compacte, tabellaire of outline-rapportraster als zijn locatie-, rowItems-, colItems- en data-as-metadata in staging voordat werkbladwaarden en uitvoereigendom samen worden vastgelegd; het geeft 1 terug bij succes of -1 met een diagnose bij niet-ondersteunde status of een botsing

Ondersteunde niet-lege lokale weergaven behouden actuele filters, exacte cacheledenidentiteiten, gewone hiërarchieën, ondersteunde gegroepeerde domeinen, standaard of aangepaste subtotalen en beide ondersteunde data-assen; het native raster gebruikt oorspronkelijke aggregatiewaarden in plaats van weergegeven gemiddelden of andere niet-additieve resultaten opnieuw te combineren

Bestaande celobjecten en opmaak blijven beschikbaar, terwijl het krimpen of verplaatsen van het rapport alleen onveranderde eerder beheerde waarden wist; bewerkte uitvoer, bronoverlapping, samengevoegde cellen, formules, arrays en andere rapporten worden geweigerd vóór mutatie

Geïmporteerde scalaire uitvoer vereist expliciete overname met AAdoptExisting=True; latere updates gebruiken persistente eigendom per afzonderlijke cel, ook na opslaan en heropenen

De bewerking leest actuele cacherecords en vernieuwt geen brondata of herberekent geen formules; Cache.RefreshOnLoad=False is geldig omdat het werkblad nu echte native resultaten bevat die in staging zijn opgebouwd

Recordfilter-callbacks van de aanroeper doen mee aan de losgemaakte preview maar hebben geen OOXML-representatie; de expliciete native vernieuwing van Excel kan willekeurige callback-beperkingen niet reproduceren, terwijl ondersteunde persistente handmatige en Slicer-filters hun wire-representatie behouden

Ondersteunde SUM-berekende cachevelden en cache-eigen berekende items gebruiken het contexttotaal-contract dat in Native berekende Pivot-velden en cache-eigen items wordt beschreven; aangepaste ledenbijschriften en niet-ondersteunde layoutcombinaties worden expliciet geweigerd, terwijl ondersteunde gegenereerde rauwe layout niet-gerelateerde XML en actuele ledenmaskers behoudt

TryXLSXMakeNativePivotLayout(const Xml: WideString; Table: TXLSPivotTable; AWriter: TlxPivotResultWriter; out ResultXml, Reason: WideString): Boolean is de helper voor gestage layout op lager niveau in lxPivotXml

Zijn writer ontvangt de volledige rapportrechthoek in rij-major-volgorde, inclusief lege cellen, met zero-based offsets vanaf het tabelanker; XML- en rasterpreflight voltooien vóór de eerste callback, maar schrijfacties in eigendom van de aanroeper kunnen niet worden teruggedraaid wanneer een callback een exception geeft

De werkmapfacade levert een losgemaakte capture-writer voor transactionele celupdates; de gecombineerde gestage preview en native Variant-rasters zijn begrensd op 4194304 cellen

Het native previewpad kan native eindtotaaloriëntatie opvragen via de optionele AUseNativeGrandTotals-parameter van TXLSPivotTable.MakePreview; bestaande aanroepen met één writer en layout-writer behouden hun vorige gedrag

Layout en herhaalde labels

Zet Compact en Outline op het rapport en elk rijveld vóór materialisatie; tabellaire velden gebruiken beide vlaggen als False, outline-velden gebruiken Compact=False en Outline=True, en compacte velden gebruiken beide vlaggen als True

property TXLSPivotField.RepeatLabels: Boolean;

RepeatLabels staat standaard op False, kopieert onafhankelijk mee met het veld en leest of schrijft de native x14:pivotField fillDownLabels-extensie; het herhaalt bovenliggende labels in tabellaire en outline-uitvoer en heeft geen effect op een veld waarvan de compact- en outline-vlaggen allebei aan staan

Elk afzonderlijk rijveld krijgt zijn eigen fysieke kolom, terwijl aangrenzende compacte outline-velden een labelkolom delen; meerdere measures op rijen volgen CompactData, en meerdere measures op kolommen behouden onafhankelijke databijschriften en eindtotalen

Standaard tabellaire subtotalen verschijnen onder hun groep; outline-SubtotalTop kiest de positie boven of onder, terwijl measures op rijen aparte aggregaatrijen onder de groep gebruiken en het bijschrift van elke measure behouden

Native gegroepeerde uitvoer laat afwezige rij- en kolomintersecties leeg en behoudt een echte numerieke nul; gewone Make en previews zonder de native optie houden hun vorige gedrag bij lege resultaten aan

Inactieve en measure-velden erven de rapportlayout in gestage native metadata zodat de expliciete vernieuwing van Excel de juiste veld- en databijschriften behoudt; de bewerking behoudt de live veldinstellingen en bestaande eigendomscontroles

Geïmporteerde extensies voor herhaalde labels accepteren namespace-aliassen, inclusief declaraties op het extensie-element zelf; onbekende niet-gerelateerde XML blijft door het native materialisatiepad behouden

Gegroepeerde leden, asvolgorde en aangepaste subtotalen

Native uitvoer ondersteunt volledige numerieke bereikgroepen, datumgroepen en handmatige leedengroepen die worden gerepresenteerd door de bestaande getypeerde groeperingsmetadata van de cache; gegenereerde labels behouden de exacte geïmporteerde GroupItemLabels, inclusief Unicode en gelokaliseerde datumbijschriften

Groepering wordt geëvalueerd op een losgemaakte cache en behoudt daarbij records, gedeelde itemhandles en groepsidentiteiten van de live cache; ongeldige grenzen, nulintervallen, onvolledige domeinen of niet-ondersteunde groepsitem-waardetypes worden geweigerd voordat werkbladuitvoer verandert

De bestaande zero-based TXLSPivotField.Position bepaalt de stabiele native rij- of kolomasvolgorde; gelijke posities behouden de geschreven veldvolgorde, dus nieuw aangemaakte velden met de standaardpositie behouden hun vorige volgorde

Native geïmporteerde Jaar/Maand- en ouder-/handmatige-lid-hiërarchieën behouden hun expliciete asvolgorde, terwijl cacheveldindices, weergaveveldindices en identiteiten van de weergaveberekeningsbasis onveranderd blijven; handmatige groepen volgen de expliciete Pivot-itemvolgorde in plaats van groepslabels of cacheindices te sorteren

Aangepaste rijsubtotalen ondersteunen xlpsSum, xlpsCount, xlpsAverage, xlpsMax, xlpsMin, xlpsProduct, xlpsCountNumbers, xlpsStdDev, xlpsStdDevP, xlpsVar en xlpsVarP, inclusief meerdere gekozen functies, tabellaire of outline-velden en measures op rijen

Elke functie aggregeert de oorspronkelijke bronrecords binnen zijn eigen subtotaalscope; zijn gestage rijmetadata identificeert de gekozen functie onafhankelijk en behoudt daarmee het expliciete vernieuwingsgedrag van Excel voor niet-additieve berekeningen en lege of foutresultaten

Een geïmporteerde aangepaste subtotaalselectie sluit het impliciete automatische subtotaal uit, zelfs wanneer defaultSubtotal ontbreekt in native XML; toepassingen mogen xlpsDefault niet combineren met aangepaste functies, en zo'n dubbelzinnig getypeerd verzoek wordt vóór mutatie geweigerd

Meerdere kolomveldniveaus met subtotalen, niet-ondersteunde compacte data-as-combinaties, ingeklapte leden en aangepaste bijschriften vallen buiten dit native uitvoercontract; berekende velden en items hebben hun eigen nauwere SUM- en ledenidentiteitsvereisten, en rauwe bewaring impliceert geen ondersteuning voor herberekening of materialisatie van een feature

Opslaan, heropenen en opnieuw materialiseren behouden ondersteunde groepering, asvolgorde en subtotaalidentiteiten; geïmporteerde native weergaven en onafhankelijk gekopieerde getypeerde caches zijn ook tegen Excel getest bij zowel het eerste openen als de expliciete vernieuwing

Native weergaveberekeningen

Zet ShowDataAs of ExtendedShowDataAs van elk gewoon dataveld vóór het aanroepen van MaterializeNativePivotTable; basis- en uitgebreide weergavemodi sluiten elkaar uit

Basismodi omvatten verschil, procent van een basisitem, procentverschil, lopend totaal, procent van rij, kolom of eindtotaal, en index; uitgebreide modi omvatten bovenliggende rij, bovenliggende kolom en percentages van geselecteerde ouders, cumulatief percentage en oplopende of aflopende dichte rangnummers

BaseField is de zero-based Pivot-veldindex voor vergelijkingen, lopende totalen, percentages van geselecteerde ouders en rangnummers; vergelijkingen gebruiken de zero-based BaseItem-positie, of xlPivotBaseItemPrevious en xlPivotBaseItemNext voor aangrenzende zichtbare leden in de effectieve weergavevolgorde

Percentages van bovenliggende rij of kolom kiezen het bijbehorende binnenste asveld zonder BaseField te gebruiken; een ontbrekend bijbehorend asveld laat die resultaten leeg

Gewone percentages delen door de oorspronkelijke aggregatie op de relevante scope, inclusief niet-additieve gemiddelden; cumulatieve percentagen sommeren weergegeven ledenaggregaties en gebruiken het oorspronkelijke astotaal voor een binnenste basisveld, terwijl een buitenste basisveld de som over zijn matchende overige leden gebruikt, dus gemiddelden kunnen boven 100 procent uitkomen

Native rangnummers tellen onderscheiden voorafgaande aggregatiewaarden, en vergelijkingen behouden het gedrag van Excel voor lege waarden en fouten bij afwezige intersecties, ontbrekende bases, deling door nul en vorige/volgende grenzen; gewone percentages behandelen een afwezige teller als nul

Eindtotalen gebruiken de native semantiek van de gekozen modus, inclusief lege totalen langs een vergelijkings- of lopende as; het wijzigen van een weergavemodus behoudt de transactionele eigendoms-, botsings- en budgetcontroles van het rapport

Opslaan en heropenen behouden de gekozen basis- of uitgebreide modus en basisidentiteiten, en gestage native metadata ondersteunt een expliciete Excel-vernieuwing; gewone Make en previews zonder de native optie houden hun bestaande berekeningscontract aan

Slicer-cross-filter-beschikbaarheid

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

Deze alleen-lezen query evalueert actuele ondersteunde niet-OLAP-cacherecords terwijl hij de eigen selectie van deze Slicer negeert en andere Slicer-selecties, handmatige filters, predicaten van de aanroeper en toepasselijke aggregaatfilters vasthoudt

Beschikbaarheid is de unie over gekoppelde weergaven; historische leden zonder matchende records hebben geen data, lege measures hebben geen data, en niet-lege tekst-, Boolean-, nul-, fout- en datummeasures tellen als data onder het geverifieerde native contract

De query gebruikt een leeslease en losgemaakte recordpreview, behoudt live handles en selectie, en eert FormulaArrayMemoryLimit; callbackfouten, herintrede, ongeldige bindingen of niet-ondersteunde aggregaatberekende leden geven een exception zonder live wijzigingen vast te leggen

Beschikbaarheid opvragen vernieuwt geen caches, herberekent geen formules, voert geen bestands-I/O uit en werkt geen geserialiseerde native no-data-vlaggen bij; toepassingen mogen native UI-status niet afleiden uit deze alleen-lezen bewerking

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

De geavanceerde record-callback ontvangt de losgemaakte preview en een zero-based recordindex na ondersteunde eenvoudige en aggregaatfiltering; EvaluationSourceTable behoudt de oorspronkelijke weergave-identiteit en de teruggegeven waarde is het aantal uitgezonden records

Een vervangend filter substitueert alleen de geregistreerde callback van de meegegeven eigenaar; andere eigenaren en het externe predicaat blijven actief, en een niet-nil vervangende callback vereist een niet-nil eigenaar

Expliciete opschoning van historische leden

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 verwijdert ongebruikte leden na volledige validatie en hertoewijzing van ondersteunde gekoppelde weergaven en Slicers

Het geeft het totale aantal verwijderde gedeelde items over alle velden terug, nul bij een geslaagde no-op, of -1 met diagnose 1402; actuele records behouden elk gerefereerd lid, plus hooguit het gevraagde aantal ongebruikte leden per veld, gekozen op hoogste oorspronkelijke gedeeld-item-index

Behouden leden houden hun oorspronkelijke relatieve volgorde en objecthandles terwijl logische indices compact worden; gekoppelde veld-/itemhandles, handmatige verborgen- en detailvlaggen, actieve pagina- of vergelijkingsleden en Slicer-selecties behouden hun identiteiten

Domeinvlaggen en grenzen worden herberekend op het behouden domein; ondersteunde geïmporteerde gecomprimeerde rij-/kolom- en paginaposities worden expliciet opnieuw gemapt, terwijl dummy-referenties voor eindtotalen en ordinals van data-pseudovelden onveranderd blijven

Gewone volledige lokale werkbladcaches worden ondersteund; gegroepeerde, berekende, ledenproperty-, OLAP-, externe, onvolledige of dubbelzinnige caches en niet-ondersteunde ondoorzichtige identiteitsmetadata worden geweigerd vóór mutatie

Het verwijderen van een actief pagina- of vergelijkingslid, een volledige geselecteerde Slicer-subset of een eerder niet-lege effectieve intersectie wordt atomair geweigerd; ook primitieve ledenattributen die tijdens getypeerde herbouw verloren zouden gaan, worden geweigerd

De bekende materialisatie-eigendomsextensie blijft onveranderd omdat zijn coördinaten en getypeerde waardetokens geen cacheledenindices bevatten; van niet-gerelateerde ondoorzichtige extensies wordt geen veiligheid aangenomen

Opschoning vernieuwt geen brondata, herschrijft geen werkbladrapportcellen, roept geen record-callbacks aan en past geen MissingItemsLimit-metadata automatisch toe; vernieuwen blijft alleen-toevoegen tenzij deze bewerking expliciet wordt gevraagd

Geavanceerde opschoningscoördinatie

TXLSPivotCache._PrepareMissingItemPurge geeft een ondoorzichtige TXLSPivotCachePurgePlan terug; toepassingen moeten normaal gesproken de werkmapfacade gebruiken zodat elke gekoppelde weergave en Slicer wordt meegenomen

MapItem en RemainingItemCount inspecteren de cachehertoewijzing, StagePivotField registreert een gekoppeld veld en geeft zijn stage-index terug, en MapViewItemPosition inspecteert de wire-positietoewijzing van dat veld; verwijderde leden mappen naar -1 en RemovedCount rapporteert het totale aantal verwijderingen

Validate controleert oorspronkelijk schema, records, eigendomsidentiteiten van velden/items en gestage weergaveselecties; Commit valideert opnieuw en draagt voorbereid eigendom over zonder toewijzing of callbacks na de eerste live uitwisseling

Het plan is eigenaar van losgemaakte snapshots, houdt zijn mutabele gestage cache privé en is nooit eigenaar van originele cache- of weergaveobjecten; houd die originelen in leven totdat de Destroy van het plan de staging vrijgeeft, en commit elk plan slechts één keer

Geweigerde veldstaging draait die fase terug zodat het plan hergebruikt kan worden; niet-ondersteunde mutaties na voorbereiding worden vóór de commit geweigerd