Dokumentace HotXLS

Nativní výstup kontingenčních tabulek, dotazy cross-filter a chybějící členy

Nativní výstup do mezipaměti listu

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

Operace připraví před potvrzením hodnot listu i výstupního vlastnictví najednou kompletní nativní mřížku sestavy v kompaktní, tabulkové či obrysové podobě a její umístění, rowItems, colItems i metadata datové osy; vrací 1 při úspěchu nebo -1 s diagnostikou při nepodporovaném stavu či kolizi

Podporovaná neprázdná lokální zobrazení si zachovají aktuální filtry, přesné identity členů mezipaměti, obyčejné hierarchie, podporované seskupené domény, výchozí či vlastní mezisoučty a libovolnou podporovanou datovou osu; nativní mřížka používá původní agregované hodnoty, místo aby znovu kombinovala zobrazené průměry či jiné neaditivní výsledky

Existující objekty buněk a formátování zůstanou dostupné, zatímco zmenšení či přesun sestavy vymaže jen nezměněné dříve vlastněné hodnoty; upravený výstup, překryv se zdrojem, sloučení, vzorce, pole a jiné sestavy se odmítnou před mutací

Importovaný skalární výstup vyžaduje explicitní adopci s AAdoptExisting=True; následné aktualizace používají trvalé vlastnictví po jednotlivých buňkách, včetně situací po uložení a opětovném otevření

Operace čte aktuální záznamy mezipaměti a neaktualizuje zdrojová data ani nepřepočítává vzorce; Cache.RefreshOnLoad=False je platné, protože list teď obsahuje skutečné připravené nativní výsledky

Zpětná volání filtru záznamů volajícího se účastní odděleného náhledu, ale nemají OOXML reprezentaci; explicitní nativní aktualizace Excelu nedokáže reprodukovat libovolná omezení ze zpětných volání, zatímco podporované trvalé ruční filtry a filtry Slicerů si zachovají reprezentaci ve formátu

Podporovaná počítaná pole mezipaměti SUM i položky vlastněné mezipamětí používají kontrakt kontextových součtů popsaný v tématu Nativní počítaná pole kontingenčních tabulek a položky vlastněné mezipamětí; vlastní titulky členů a nepodporované kombinace rozvržení se výslovně odmítnou, zatímco podporované generované surové rozvržení si ponechá nesouvisející XML a aktuální masky členů

TryXLSXMakeNativePivotLayout(const Xml: WideString; Table: TXLSPivotTable; AWriter: TlxPivotResultWriter; out ResultXml, Reason: WideString): Boolean je pomocník připraveného rozvržení na nižší úrovni v lxPivotXml

Jeho zapisovač dostane kompletní obdélník sestavy v pořadí po řádcích, včetně prázdných buněk, s offsety od nuly vůči kotvě tabulky; kontrola XML i mřížky skončí dřív, než dojde na první zpětné volání, ale zápisy vlastněné volajícím se při výjimce vrátit nedají

Fasáda sešitu dodá oddělený zachytávající zapisovač pro transakční aktualizace buněk; kombinovaný připravený náhled a nativní Variant mřížky jsou ohraničené na 4194304 buněk

Cesta nativního náhledu si umí vyžádat nativní orientaci celkových součtů přes volitelný parametr AUseNativeGrandTotals v TXLSPivotTable.MakePreview; stávající volání s jedním zapisovačem i s layout zapisovačem si zachovají předchozí chování

Rozvržení a opakované titulky

Nastavte Compact a Outline na sestavě a na každém poli řádků před materializací; tabulková pole používají oba příznaky jako False, obrysová pole používají Compact=False a Outline=True a kompaktní pole oba příznaky jako True

property TXLSPivotField.RepeatLabels: Boolean;

RepeatLabels má výchozí hodnotu False, kopíruje se nezávisle spolu s polem a čte či zapisuje nativní rozšíření x14:pivotField fillDownLabels; opakuje titulky nadřazených úrovní v tabulkovém i obrysovém výstupu a nemá žádný efekt na pole, které má kompaktní i obrysový příznak zapnutý současně

Každé samostatné pole řádků dostane vlastní fyzický sloupec, zatímco sousední kompaktní obrysová pole sdílejí sloupec titulků; více měr na řádcích sleduje CompactData a více měr na sloupcích si ponechá nezávislé titulky dat i celkové součty

Výchozí tabulkové mezisoučty se objevují pod svou skupinou; obrysové SubtotalTop volí umístění nahoře či dole, zatímco míry na řádcích používají samostatné agregující řádky pod skupinou a zachovají titulek každé míry

Nativní výstup z mezipaměti nechá chybějící průniky řádků a sloupců prázdné a zachová skutečnou numerickou nulu; obyčejné Make a náhledy bez nativní volby si ponechají předchozí chování prázdných výsledků

Neaktivní pole a pole měr zdědí rozvržení sestavy v připravených nativních metadatech, takže explicitní aktualizace Excelu zachová odpovídající titulky polí a dat; operace zachová živé nastavení polí i stávající kontroly vlastnictví

Importovaná rozšíření opakovaných titulků přijímají aliasy namespace, včetně deklarací na samotném elementu rozšíření; neznámé nesouvisející XML zůstane cestou nativní materializace zachované

Seskupení členové, pořadí os a vlastní mezisoučty

Nativní výstup podporuje kompletní numerické skupiny rozsahů, datumové skupiny i ruční skupiny členů reprezentované stávajícími typovanými metadaty seskupení mezipaměti; generované titulky si zachovají přesné importované GroupItemLabels, včetně Unicode a lokalizovaných datumových titulků

Seskupení se vyhodnocuje na oddělené mezipaměti, se zachováním záznamů živé mezipaměti, handlerů sdílených položek i identit skupin; neplatné meze, nulové intervaly, nekompletní domény či nepodporované typy hodnot skupinových položek se odmítnou dřív, než se změní výstup listu

Stávající pozice TXLSPivotField.Position od nuly určuje stabilní nativní pořadí osy řádků či sloupců; shodné pozice zachovají autorské pořadí polí, takže nově vytvořená pole s výchozí pozicí si ponechají své předchozí pořadí

Nativní importované hierarchie Year/Month i nadřazené/ruční hierarchie členů si zachovají explicitní sekvenci os, zatímco indexy polí mezipaměti, indexy polí zobrazení i základní identity výpočtu zobrazení zůstanou beze změny; ruční skupiny respektují explicitní pořadí položek kontingenční tabulky, místo aby řadily titulky skupin nebo indexy mezipaměti

Vlastní mezisoučty řádků podporují xlpsSum, xlpsCount, xlpsAverage, xlpsMax, xlpsMin, xlpsProduct, xlpsCountNumbers, xlpsStdDev, xlpsStdDevP, xlpsVar a xlpsVarP, včetně více vybraných funkcí, tabulkových či obrysových polí a měr na řádcích

Každá funkce agreguje původní zdrojové záznamy ve vlastním rozsahu mezisoučtu; její připravená metadata řádku identifikují vybranou funkci nezávisle, se zachováním chování explicitní aktualizace Excelu pro neaditivní výpočty i prázdné či chybové výsledky

Importovaná volba vlastního mezisoučtu vyloučí implicitní automatický mezisoučet, i když v nativním XML chybí defaultSubtotal; kombinovat xlpsDefault s vlastními funkcemi se nesmí a takový dvojznačný typovaný požadavek se před mutací odmítne

Více úrovní sloupcových polí s mezisoučty, nepodporované kompaktní kombinace datové osy, sbalení členů a vlastní titulky zůstávají mimo tento kontrakt nativního výstupu; počítaná pole i položky mají vlastní užší požadavky na SUM a identity členů a surové zachování neznamená podporu přepočtu či materializace funkce

Ukládání, opětovné otevření i opětovná materializace zachovají podporované seskupení, pořadí os i identity mezisoučtů; importované nativní zobrazení i samostatně zkopírované typované mezipaměti byly proti Excelu ověřené při prvním otevření i při explicitní aktualizaci

Nativní výpočty zobrazení

Nastavte ShowDataAs nebo ExtendedShowDataAs každého obyčejného datového pole před voláním MaterializeNativePivotTable; základní a rozšířené režimy zobrazení se vzájemně vylučují

Základní režimy zahrnují rozdíl, procento základní položky, procentní rozdíl, průběžný součet, procento řádku, sloupce či celkového součtu a index; rozšířené režimy zahrnují procenta nadřazeného řádku a sloupce a vybraných nadřazených, kumulativní procenta a vzestupné či sestupné husté ranky

BaseField je index kontingenčního pole od nuly pro porovnání, průběžné součty, procenta vybraných nadřazených i ranky; porovnání používají pozici BaseItem od nuly, nebo xlPivotBaseItemPrevious a xlPivotBaseItemNext pro sousední viditelné členy v účinném pořadí zobrazení

Procenta nadřazeného řádku a sloupce zvolí odpovídající nejvnitřnější pole osy bez použití BaseField; chybějící odpovídající osa nechá tyto výsledky prázdné

Jednoduchá procenta dělí původním agregátem v příslušném rozsahu, včetně neaditivních průměrů; kumulativní procenta sčítají zobrazené agregáty členů a pro nejvnitřnější základní pole použijí původní součet osy, zatímco vnější základní pole použije součet přes své odpovídající zbývající členy, takže průměry můžou přesáhnout 100 procent

Nativní ranky počítají odlišné předcházející agregované hodnoty a porovnání zachovávají chování Excelu pro prázdné hodnoty a chyby u absentujících průniků, chybějících základů, nulových dělitelů i hranic předchozí/následující; jednoduchá procenta berou absentující čitatele jako nulu

Celkové součty používají nativní sémantiku vybraného režimu, včetně prázdných součtů podél porovnávací či průběžné osy; změna režimu zobrazení zachová transakční kontroly vlastnictví, kolizí i rozpočtu sestavy

Ukládání a opětovné otevření zachovají zvolený základní či rozšířený režim i identity základů a připravená nativní metadata podporují explicitní aktualizaci Excelu; obyčejné Make a náhledy bez nativní volby si ponechají stávající výpočetní kontrakt

Dostupnost cross-filter ve Slicerech

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

Tento dotaz jen pro čtení vyhodnotí aktuální podporované záznamy mezipaměti mimo OLAP, přičemž ignoruje vlastní výběr tohoto Sliceru a zachová výběry ostatních Slicerů, ruční filtry, predikáty volajícího i příslušné agregující filtry

Dostupnost je sjednocení napříč připojenými zobrazeními; historické členy bez odpovídajících záznamů nemají data, prázdné míry nemají data a neprázdný text, logické hodnoty, nula, chyby a datumové míry se při ověřeném nativním kontraktu jako data počítají

Dotaz používá zámek čtení a oddělený náhled záznamů, zachovává živé handlery i výběr a respektuje FormulaArrayMemoryLimit; selhání zpětného volání, reentrance, neplatné vazby či nepodporovaní agregující počítaní členové vyvolají výjimku, aniž by se potvrdily živé změny

Dotazování dostupnosti neaktualizuje mezipaměti, nepřepočítává vzorce, neprovádí souborové I/O a neaktualizuje serializované nativní příznaky absence dat; nativní stav UI si z této operace jen pro čtení neodvozujte

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

Pokročilé zpětné volání záznamů dostane oddělený náhled a index záznamu od nuly po podporovaném jednoduchém i agregujícím filtrování; EvaluationSourceTable si zachová identitu původního zobrazení a návratová hodnota je počet emitovaných záznamů

Náhradní filtr substituuje jen zpětné volání zaregistrované dodaným vlastníkem; ostatní vlastníci a externí predikát zůstávají aktivní a nenil náhradní zpětné volání vyžaduje nenil vlastníka

Explicitní čištění historických členů

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 odstraní nepoužité členy po kompletní validaci a přemapování podporovaných propojených zobrazení i Slicerů

Vrací celkový počet odstraněných sdílených položek napříč poli, nulu pro úspěšnou operaci bez efektu, nebo -1 s diagnostikou 1402; aktuální záznamy si ponechají každého odkazovaného člena plus nejvýše požadovaný počet nepoužitých členů na pole, vybraných podle největšího původního indexu sdílené položky

Uchovaní členové si ponechají původní relativní pořadí a handlery objektů, zatímco logické indexy se zkomprimují; propojené handlery polí i položek, ruční příznaky skrytí a detailů, aktivní členy stránek či porovnání i výběry Slicerů si zachovají identity

Domanénové příznaky i meze se přepočtou z uchované domény; podporované importované komprimované pozice řádků/sloupců a stránek se přemapují explicitně, zatímco fiktivní odkazy celkového součtu i pořadová čísla pseudopole dat zůstanou beze změny

Podporované jsou obyčejné kompletní lokální mezipaměti listů; seskupené, počítané, pole vlastností členů, OLAP, externí, nekompletní či dvojznačné mezipaměti i nepodporovaná neprůhledná identitní metadata se před mutací odmítnou

Odstranění aktivního člena stránky či porovnání, kompletní vybrané Slicer podmnožiny či dříve neprázdného účinného průniku se odmítne atomicky; odmítnou se i primitivní atributy členů, které by při typované přestavbě ztratily

Známé rozšíření vlastnictví materializace zůstává beze změny, protože jeho souřadnice i typované tokeny hodnot neobsahují indexy členů mezipaměti; nesouvisející neprůhledná rozšíření se za bezpečná nepovažují

Čištění neaktualizuje zdrojová data, nepřepisuje buňky sestavy v listu, nevolá zpětná volání záznamů ani neaplikuje metadata MissingItemsLimit automaticky; aktualizace zůstává pouze přidávající, dokud se tato operace explicitně nevyžádá

Pokročilá koordinace čištění

TXLSPivotCache._PrepareMissingItemPurge vrátí neprůhledný TXLSPivotCachePurgePlan; aplikace by normálně měly používat fasádu sešitu, aby se zahrnulo každé propojené zobrazení i Slicer

MapItem a RemainingItemCount prozkoumají přemapování mezipaměti, StagePivotField zaregistruje propojené pole a vrátí jeho index přípravy a MapViewItemPosition prozkoumá mapování wire pozice toho pole; odstranění členové se mapují na -1 a RemovedCount hlásí celkový počet odstranění

Validate zkontroluje původní schéma, záznamy, vlastnické identity polí i položek a připravené výběry zobrazení; Commit validuje znovu a převede připravené vlastnictví bez alokace a bez zpětných volání po první živé výměně

Plán vlastní oddělené snímky, svou měnitelnou připravenou mezipaměť drží v soukromí a nikdy nevlastní původní objekty mezipaměti ani zobrazení; tyto původní udržujte naživu, dokud Destroy plánu neuvolní přípravu, a každý plán potvrďte jen jednou

Odmítnutá příprava pole se vrátí zpět jen pro tu fázi, takže plán lze znovu použít; nepodporované mutace po přípravě se odmítnou dřív než potvrzení