Natywne wyjście tabel przestawnych, zapytania cross-filter i brakujące elementy
Natywne zapamiętane wyjście arkuszowe
function TXLSXWorkbook.MaterializeNativePivotTable( ATable: TXLSPivotTable): Integer; function TXLSXWorkbook.MaterializeNativePivotTable( ATable: TXLSPivotTable; AAdoptExisting: Boolean): Integer;
Operacja etapuje zarówno pełną natywną siatkę raportu kompaktową, tabelaryczną albo konspektową, jak i jej lokalizację, rowItems, colItems i metadane osi danych przed zatwierdzeniem wartości arkusza i własności wyjścia razem; zwraca 1 po sukcesie albo -1 z diagnostyką przy stanie nieobsługiwanym lub kolizji
Obsługiwane niepuste lokalne widoki zachowują bieżące filtry, dokładne tożsamości elementów pamięci podręcznej, zwykłe hierarchie, obsługiwane pogrupowane dziedziny, domyślne albo niestandardowe sumy częściowe i dowolną obsługiwaną oś danych; natywna siatka korzysta z pierwotnych wartości agregatów zamiast łączyć ponownie wyświetlane średnie albo inne wyniki niedodawalne
Istniejące obiekty komórek i formatowanie pozostają dostępne, podczas gdy kurczenie albo przenoszenie raportu czyści wyłącznie niezmienione wcześniej posiadane wartości; edytowane wyjście, nakładanie źródła, scalenia, formuły, tablice i inne raporty są odrzucane przed mutacją
Zaimportowane skalarne wyjście wymaga jawnego przejęcia z AAdoptExisting=True; kolejne aktualizacje korzystają z utrwalonej własności pojedynczych komórek, łącznie ze stanem po zapisie i ponownym otwarciu
Operacja czyta bieżące rekordy pamięci podręcznej i nie odświeża danych źródłowych ani nie przelicza formuł; Cache.RefreshOnLoad=False jest poprawne, bo arkusz zawiera teraz rzeczywiście etapowane natywne wyniki
Callbacki filtrów rekordów wywołującego uczestniczą w odłączonym podglądzie, ale nie mają reprezentacji OOXML; jawne natywne odświeżenie Excela nie potrafi odtworzyć dowolnych restrykcji callbacków, podczas gdy obsługiwane utrwalone filtry ręczne i Slicerów zachowują reprezentację w formacie zapisu
Obsługiwane obliczeniowe pola pamięci podręcznej SUM i elementy obliczeniowe należące do pamięci podręcznej korzystają z kontraktu sum kontekstowych opisanego w natywnych polach obliczeniowych tabel przestawnych i elementach należących do pamięci podręcznej; niestandardowe podpisy elementów i nieobsługiwane kombinacje układu są odrzucane jawnie, podczas gdy obsługiwany wygenerowany surowy układ zachowuje niepowiązany XML i bieżące maski elementów
TryXLSXMakeNativePivotLayout(const Xml: WideString; Table: TXLSPivotTable; AWriter: TlxPivotResultWriter; out ResultXml, Reason: WideString): Boolean to niżej poziomowy etapowany pomocnik układu w lxPivotXml
Jego pisarz otrzymuje cały prostokąt raportu w kolejności wiersz-główna, łącznie z pustymi komórkami, z offsetami numerowanymi od zera względem kotwicy tabeli; preflight XML i siatki kończy się przed pierwszym callbackiem, ale zapisy należące do wywołującego nie dają się wycofać, gdy callback podniesie wyjątek
Fasada skoroszytu dostarcza odłączony pisarz przechwytujący dla transakcyjnych aktualizacji komórek; połączone etapowany podgląd i natywne siatki Variant są ograniczone do 4194304 komórek
Natywna ścieżka podglądu może zażądać natywnej orientacji sum całkowitych przez opcjonalny parametr AUseNativeGrandTotals TXLSPivotTable.MakePreview; istniejące wywołania jedno-pisarzowe i z pisarzem układu zachowują poprzednie zachowanie
Układ i powtarzane etykiety
Ustaw Compact i Outline na raporcie i każdym polu wierszy przed materializacją; pola tabelaryczne używają obu flag jako False, pola konspektowe używają Compact=False i Outline=True, a pola kompaktowe obu flag jako True
property TXLSPivotField.RepeatLabels: Boolean;
RepeatLabels domyślnie ma wartość False, kopiuje się niezależnie z polem i czyta lub zapisuje natywne rozszerzenie x14:pivotField fillDownLabels; powtarza etykiety przodków w wyjściu tabelarycznym i konspektowym oraz nie działa na polu, którego obie flagi kompaktowa i konspektowa są włączone
Każde osobne pole wierszy otrzymuje własną fizyczną kolumnę, podczas gdy sąsiednie pola kompaktowe konspektu dzielą kolumnę etykiet; wiele miar w wierszach podąża za CompactData, a wiele miar w kolumnach zachowuje niezależne podpisy danych i sumy całkowite
Domyślne tabelaryczne sumy częściowe pojawiają się pod swoją grupą; konspektowe SubtotalTop wybiera lokalizację górną albo dolną, podczas gdy miary w wierszach używają osobnych wierszy agregacji pod grupą i zachowują podpis każdej miary
Natywne zapamiętane wyjście pozostawia nieobecne przecięcia wierszy i kolumn puste i zachowuje rzeczywiste liczbowe zero; zwykłe Make i podglądy bez opcji natywnej zachowują poprzednie zachowanie pustego wyniku
Pola nieaktywne i miary dziedziczą układ raportu w etapowanych metadanych natywnych, więc jawne odświeżenie Excela zachowuje odpowiednie podpisy pól i danych; operacja zachowuje żywe ustawienia pól i istniejące sprawdzenia własności
Zaimportowane rozszerzenia powtarzanych etykiet akceptują aliasy przestrzeni nazw, łącznie z deklaracjami na samym elemencie rozszerzenia; nieznany niepowiązany XML pozostaje zachowany przez ścieżkę natywnej materializacji
Elementy pogrupowane, kolejność osi i niestandardowe sumy częściowe
Natywne wyjście obsługuje pełne liczbowe grupy zakresów, grupy dat i ręczne grupy elementów reprezentowane przez istniejące typowane metadane grupowania pamięci podręcznej; wygenerowane etykiety zachowują dokładne zaimportowane GroupItemLabels, łącznie z Unicode i zlokalizowanymi podpisami dat
Grupowanie jest ewaluowane na odłączonej pamięci podręcznej, zachowując rekordy żywej pamięci podręcznej, uchwyty elementów współdzielonych i tożsamości grup; nieprawidłowe granice, interwały zerowe, niekompletne dziedziny albo nieobsługiwane typy wartości elementów grupy są odrzucane przed zmianą wyjścia arkusza
Istniejące numerowane od zera TXLSPivotField.Position decyduje o stabilnej natywnej kolejności osi wierszy albo kolumn; równe pozycje zachowują autorską kolejność pól, więc nowo utworzone pola z domyślną pozycją zachowują swoje poprzednie uporządkowanie
Natywnie zaimportowane hierarchie Rok/Miesiąc oraz rodzic/element-ręczny zachowują swoją jawną sekwencję osi, podczas gdy indeksy pól pamięci podręcznej, indeksy pól widoku i tożsamości bazy obliczeń wyświetlania pozostają bez zmian; grupy ręczne honorują jawny kolejność elementów tabeli przestawnej zamiast sortować etykiety grup albo indeksy pamięci podręcznej
Niestandardowe sumy częściowe wierszy obsługują xlpsSum, xlpsCount, xlpsAverage, xlpsMax, xlpsMin, xlpsProduct, xlpsCountNumbers, xlpsStdDev, xlpsStdDevP, xlpsVar i xlpsVarP, łącznie z wieloma wybranymi funkcjami, polami tabelarycznymi lub konspektowymi i miarami w wierszach
Każda funkcja agreguje pierwotne rekordy źródłowe we własnym zakresie sumy częściowej; jej etapowane metadane wiersza wskazują wybraną funkcję niezależnie, zachowując zachowanie jawnego odświeżenia Excela dla obliczeń niedodawalnych oraz wyników pustych i błędów
Zaimportowany niestandardowy wybór sumy częściowej wyklucza niejawną sumę częściową automatyczną nawet wtedy, gdy defaultSubtotal nie ma w natywnym XML; aplikacje nie mogą łączyć xlpsDefault z funkcjami niestandardowymi, a takie dwuznaczne typowane żądanie jest odrzucane przed mutacją
Wiele poziomów pól kolumn z sumami częściowymi, nieobsługiwane kompaktowe kombinacje osi danych, zwinięte elementy i niestandardowe podpisy pozostają poza tym natywnym kontraktem wyjścia; pola i elementy obliczeniowe mają własne węższe wymagania SUM i tożsamości elementów, a surowa ochrona nie oznacza obsługi przeliczania ani materializowania funkcji
Zapis, ponowne otwarcie i ponowna materializacja zachowują obsługiwane grupowanie, kolejność osi i tożsamości sum częściowych; zaimportowane natywne widoki i niezależnie skopiowane typowane pamięci podręczne zostały też zweryfikowane względem Excela zarówno przy pierwszym otwarciu, jak i jawnym odświeżeniu
Natywne obliczenia wyświetlania
Ustaw ShowDataAs albo ExtendedShowDataAs każdego zwykłego pola danych przed wywołaniem MaterializeNativePivotTable; tryby podstawowe i rozszerzone wzajemnie się wykluczają
Tryby podstawowe obejmują różnicę, procent elementu bazowego, różnicę procentową, sumę narastającą, procent wiersza, kolumny albo sumy całkowitej oraz indeks; tryby rozszerzone obejmują wiersz nadrzędny, kolumnę nadrzędną i procenty wybranego nadrzędnego, procent skumulowany oraz rangi gęste rosnące albo malejące
BaseField to indeks pola tabeli przestawnej numerowany od zera dla porównań, sum narastających, procentów wybranego nadrzędnego i rang; porównania korzystają z pozycji BaseItem numerowanej od zera albo z xlPivotBaseItemPrevious i xlPivotBaseItemNext dla sąsiednich widocznych elementów w efektywnej kolejności wyświetlania
Procenty wiersza i kolumny nadrzędnej wybierają odpowiadające najbardziej wewnętrzne pole osi bez użycia BaseField; brakująca odpowiadająca oś pozostawia te wyniki puste
Proste procenty dzielą przez pierwotny agregat w odpowiednim zakresie, łącznie z niedodawalnymi średnimi; procenty skumulowane sumują wyświetlane agregaty elementów i korzystają z pierwotnej sumy osi dla najbardziej wewnętrznego pola bazowego, podczas gdy zewnętrzne pole bazowe korzysta z sumy po pasujących pozostałych elementach, więc średnie mogą przekraczać 100 procent
Natywne rangi liczą odrębne poprzedzające wartości agregatów, a porównania zachowują zachowanie pustych i błędów Excela dla nieobecnych przecięć, brakujących baz, zerowych dzielników i granic poprzedni/następny; proste procenty traktują nieobecny licznik jako zero
Sumy całkowite korzystają z natywnej semantyki wybranego trybu, łącznie z pustymi sumami wzdłuż osi porównania albo narastania; zmiana trybu wyświetlania zachowuje transakcyjne sprawdzenia własności, kolizji i budżetu raportu
Zapis i ponowne otwarcie zachowują wybrany tryb podstawowy albo rozszerzony oraz tożsamości baz, a etapowane metadane natywne wspierają jawne odświeżenie Excela; zwykłe Make i podglądy bez opcji natywnej zachowują swój istniejący kontrakt obliczeń
Dostępność cross-filter Slicerów
property TXLSXSlicerCache.ItemHasData[Index: Integer]: Boolean;
To zapytanie tylko do odczytu ewaluuje bieżące obsługiwane rekordy pamięci podręcznej non-OLAP, ignorując własny wybór tego Slicera i zachowując wybory innych Slicerów, filtry ręczne, predykaty wywołującego i mające zastosowanie filtry agregujące
Dostępność jest unią w poprzek połączonych widoków; elementy historyczne bez pasujących rekordów nie mają danych, puste miary nie mają danych, a niepuste tekstowe, Boolean, zerowe, błędowe i datowe miary liczą się jako dane pod zweryfikowanym kontraktem natywnym
Zapytanie korzysta z dzierżawy odczytu i odłączonego podglądu rekordów, zachowuje żywe uchwyty i wybór oraz honoruje FormulaArrayMemoryLimit; błąd callbacka, ponowne wejście, nieprawidłowe powiązania albo nieobsługiwane obliczeniowe elementy agregujące podnoszą wyjątek bez zatwierdzania żywych zmian
Odpytywanie dostępności nie odświeża pamięci podręcznych, nie przelicza formuł, nie wykonuje I/O plików ani nie aktualizuje zserializowanych natywnych flag braku danych; aplikacje nie powinny wnioskować natywnego stanu UI z tej operacji tylko do odczytu
TlxPivotRecordWriter = procedure(ATable: TXLSPivotTable; ARecordIndex: Integer) of object; function TXLSPivotTable.MakeRecordPreview(AWriter: TlxPivotRecordWriter; AFilterOwner: TObject = nil; AFilter: TlxPivotRecordFilter = nil): Integer;
Zaawansowany callback rekordów otrzymuje odłączony podgląd i indeks rekordu numerowany od zera po obsługiwanym filtrowaniu prostym i agregującym; EvaluationSourceTable zachowuje pierwotną tożsamość widoku, a wartość zwracana to liczba wyemitowanych rekordów
Zastępczy filtr podmienia wyłącznie zarejestrowany callback podanego właściciela; inni właściciele i predykat zewnętrzny pozostają aktywni, a nie-nilowy zastępczy callback wymaga nie-nilowego właściciela
Jawne czyszczenie elementów historycznych
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 usuwa nieużywane elementy po pełnej walidacji i przemapowaniu obsługiwanych powiązanych widoków i Slicerów
Zwraca łączną liczbę usuniętych elementów współdzielonych we wszystkich polach, zero dla udanej operacji pustej albo -1 z diagnostyką 1402; bieżące rekordy zachowują każdy referencjonowany element, plus co najwyżej żądaną liczbę nieużywanych elementów na pole, wybieranych po największym pierwotnym indeksie elementu współdzielonego
Zachowane elementy zachowują pierwotną kolejność względną i uchwyty obiektów, podczas gdy logiczne indeksy stają się kompaktowe; powiązane uchwyty pól/elementów, ręczne flagi ukrycia i szczegółów, aktywne elementy stron albo porównań i wybory Slicerów zachowują swoje tożsamości
Flagi i granice dziedziny są przeliczane z zachowanej dziedziny; obsługiwane zaimportowane skompresowane pozycje wierszy/kolumn i stron są jawnie przemapowywane, podczas gdy pozorne odwołania sum całkowitych i porządki pseudopól danych pozostają bez zmian
Obsługiwane są zwykłe kompletne lokalne pamięci podręczne arkusza; pamięci podręczne pogrupowane, obliczeniowe, właściwości elementów, OLAP, zewnętrzne, niekompletne albo dwuznaczne oraz nieobsługiwane nieprzejrzyste metadane tożsamości są odrzucane przed mutacją
Usunięcie aktywnej strony albo elementu porównania, całego wybranego podzbioru Slicera albo wcześniej niepustego efektywnego przecięcia jest odrzucane atomowo; pierwotne atrybuty elementów, które zostałyby utracone przy typowanej przebudowie, też są odrzucane
Znane rozszerzenie własności materializacji pozostaje bez zmian, bo jego współrzędne i tokeny typowanych wartości nie zawierają indeksów elementów pamięci podręcznej; niepowiązane nieprzejrzyste rozszerzenia nie są uznawane za bezpieczne
Czyszczenie nie odświeża danych źródłowych, nie przepisuje komórek raportu arkusza, nie wywołuje callbacków rekordów ani nie stosuje automatycznie metadanych MissingItemsLimit; odświeżanie pozostaje wyłącznie dołączające, dopóki tej operacji nie zażąda się jawnie
Zaawansowana koordynacja czyszczenia
TXLSPivotCache._PrepareMissingItemPurge zwraca nieprzejrzysty TXLSPivotCachePurgePlan; aplikacje powinny normalnie korzystać z fasady skoroszytu, aby każdy powiązany widok i Slicer został uwzględniony
MapItem i RemainingItemCount podglądają przemapowanie pamięci podręcznej, StagePivotField rejestruje powiązane pole i zwraca jego indeks etapu, a MapViewItemPosition podgląda mapowanie pozycji zapisu tego pola; usunięte elementy mapują się na -1, a RemovedCount raportuje łączną liczbę usunięć
Validate sprawdza pierwotny schemat, rekordy, tożsamości własności pól/elementów i etapowane wybory widoków; Commit waliduje ponownie i transferuje przygotowaną własność bez alokacji i callbacków po pierwszej żywej wymianie
Plan posiada odłączone zrzuty, trzyma swoją mutowalną etapowaną pamięć podręczną w prywatności i nigdy nie posiada pierwotnych obiektów pamięci podręcznej ani widoków; trzymaj te pierwotne przy życiu do chwili, gdy Destroy planu zwolni etapowanie, i zatwierdzaj każdy plan tylko raz
Odrzucone etapowanie pola wycofuje ten etap, więc plan można ponownie użyć; nieobsługiwane mutacje po przygotowaniu są odrzucane przed zatwierdzeniem