Dokumentacja HotXLS

Bezpieczna materializacja tabel przestawnych w arkuszu

Wersja 2.384.90 dodaje odizolowaną ewaluację tabel przestawnych i chronione zastępowanie wyników arkusza; wersja 2.384.92 rozszerza obsługiwane lokalne źródła o nazwy zdefiniowane i tabele rozwiązywane przy każdym wywołaniu

Materializacja widoku

if Workbook.RefreshPivotCache(Pivot.CacheId) <> 1 then
  raise Exception.Create('Pivot cache refresh failed');
if Workbook.MaterializePivotTable(Pivot) <> 1 then
  raise Exception.Create('Pivot output cannot be replaced safely');

TXLSXWorkbook.MaterializePivotTable(ATable: TXLSPivotTable): Integer oblicza wyniki z bieżącej pamięci podręcznej i umieszcza je w FirstRow i FirstCol widoku; zwraca 1 po sukcesie albo -1 dla źródeł nieobsługiwanych, celów niebezpiecznych, błędu ewaluacji lub odrzuconej mutacji skoroszytu

Odświeżenie i przeliczenie arkusza pozostają operacjami jawnymi; udana materializacja unieważnia zależności obliczeń, więc wywołujący może przeliczyć formuły zstępujące, gdy to odpowiednie

Domyślne przeciążenie akceptuje puste komórki celu oraz niezmienione komórki wcześniej posiadane przez ten sam widok; zajęte nieposiadane komórki gdziekolwiek wewnątrz pełnego prostokąta wyjścia odrzucają operację, łącznie z lukami, których pisarz wyniku nie wypełnia

if Workbook.MaterializePivotTable(Pivot, True) <> 1 then
  raise Exception.Create('Existing Pivot values cannot be adopted safely');

TXLSXWorkbook.MaterializePivotTable(ATable: TXLSPivotTable; AAdoptExisting: Boolean): Integer może jawnie zaadoptować istniejące skalarne komórki wewnątrz zadeklarowanego poprzedniego prostokąta widoku przy jego pierwszej materializacji; nie upoważnia to do zastępowania formuł, elementów tablic, rich textu, komórek z metadanymi ani treści poza tym prostokątem

Własność, zmiana rozmiaru i przenoszenie

Widok zachowuje dokładne współrzędne i typowane migawki wartości dla zapisanych komórek; zapis XLSX utrwala tę własność w definicji tabeli przestawnej, więc późniejsze aktualizacje mogą ją walidować po ponownym otwarciu

Zmieniona typowana treść albo usunięta niepusta posiadana komórka odrzuca całą aktualizację; podtypy liczbowe dzielą kanoniczną reprezentację liczbową, podczas gdy tekst, wartości Boolean i błędy zachowują odrębne tożsamości

Kurczenie albo przenoszenie wyniku czyści wyłącznie niezmienione posiadane wartości już nieprodukowane; istniejące obiekty komórek, formatowanie i komentarze pozostają dostępne, a niepowiązane komórki pozostają poza zbiorem własności

Zmiana FirstRow albo FirstCol przenosi następne wyjście, podczas gdy poprzednie współrzędne własności pozostają dostępne do sprzątania; pusty wynik czyści posiadane wartości i zachowuje lokalizację tylko-kotwicę

Izolowany podgląd

function TXLSPivotTable.MakePreview(AWriter: TlxPivotResultWriter): Integer;
property TXLSPivotTable.EvaluationSourceTable: TXLSPivotTable;

TXLSPivotTable.MakePreview korzysta z niezależnych kopii pamięci podręcznej i widoku, łącznie z placeholderami pól obliczeniowych, i pozbywa się ich po ewaluacji; zwykłe Make zachowuje dotychczasowe zachowanie na żywej pamięci podręcznej

Pisarz otrzymuje offsety wierszy i kolumn numerowane od zera oraz typowane wartości; wartość zwracana podąża za liczbą komórek agregatu Make, co jest odrębne od liczby wywołań pisarza; brakująca pamięć podręczna albo pisarz zwraca zero, a wyjątki ewaluacji albo pisarza propagują się

Predykaty rekordów wywołującego i zarejestrowane filtry właścicieli pozostają aktywne w podglądach, łącznie z wyborami Slicerów skoroszytu; callbacki otrzymują tymczasowy ewaluowany widok i jego tymczasową pamięć podręczną

TXLSPivotTable.EvaluationSourceTable zwraca żywy widok dla zwykłej ewaluacji i pierwotny żywy widok dla podglądu; użyj go, gdy callback musi zidentyfikować połączony widok, czytając ewaluowane rekordy z tymczasowej Cache callbacka

Właściciele callbacków pozostają własnością wywołującego; obiektów podglądu i ich rekordów nie wolno zachowywać po zakończeniu callbacka albo wywołania podglądu

Granice bezpieczeństwa

Materializacja wymaga widoku i pamięci podręcznej zarejestrowanych w tym samym skoroszycie oraz obsługiwanego lokalnego źródła prostokątnego, nazwy zdefiniowanej albo tabeli; rozwiązywanie źródła podąża za bieżącymi nazwami i zasięgami tabel, a źródła nieobsługiwane albo nierozwiązane są odrzucane przed mutacją

Bieżąca geometria źródła, inne lokalizacje tabel przestawnych, tabele strukturalne, zakresy wyników zapytań, komórki scalone oraz tablice stałe i dynamiczne nie mogą przecinać nowego wyjścia ani starych posiadanych komórek wymagających czyszczenia; sumy tabeli pozostają chronione, mimo że są wykluczone z rekordów pamięci podręcznej

Walidacja i etapowanie wyjścia działają pod dzierżawą odczytu, po czym następuje zwykły strażnik mutacji skoroszytu i sprawdzenie generacji; zamrożony widok skoroszytu tylko do odczytu odrzuca materializację bez zastępowania komórek i bez zmiany geometrii

Filtry muszą być tylko do odczytu i podążać za zwykłym kontraktem pojedynczego pisarza skoroszytu; izolacja uniemożliwia normalnym obliczeniom podglądu zmianę żywej pamięci podręcznej, ale dowolne zapisy z callbacków przez osobno przechwycone żywe obiekty nie dają się wycofać

Ta operacja materializuje obliczony układ wyników biblioteki; kompletne natywne autorstwo układu tabel przestawnych, tworzenie UI Slicerów i ewaluacja wyświetlania braku danych cross-filter pozostają odrębnymi możliwościami