HotXLS-dokumentation

Säker pivotmaterialisering i kalkylblad

Version 2.384.90 lägger till isolerad pivotutvärdering och skyddat utbyte av kalkylbladsresultat; version 2.384.92 utökar de stödda lokala källorna till definierade namn och tabeller som slås fast vid varje anrop

Materialisera en vy

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 beräknar resultat från den aktuella cachen och placerar dem i vyns FirstRow och FirstCol; den returnerar 1 vid lyckat resultat och -1 för ostödda källor, osäkra mål, utvärderingsfel eller en avslagen arbetsboksändring

Uppdatering och kalkylbladsomberäkning förblir uttryckliga åtgärder; en lyckad materialisering ogiltigförklarar beräkningsberoenden så att uppringare kan omberäkna underordnade formler när det passar

Standardöverladdningen accepterar tomma målceller och oförändrade celler som tidigare ägts av samma vy; upptagna celler utan ägare någonstans inuti den fullständiga utdatarektangeln avslår åtgärden, även luckor som resultatskrivaren inte fyller

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

TXLSXWorkbook.MaterializePivotTable(ATable: TXLSPivotTable; AAdoptExisting: Boolean): Integer kan uttryckligen överta befintliga skalära celler inuti vyns deklarerade tidigare rektangel vid dess första materialisering; den ger inte tillstånd att ersätta formler, matrismedlemmar, rich text, celler med metadata eller innehåll utanför den rektangeln

Ägarskap, storleksändring och flytt

Vyn behåller exakta koordinater och typade värdeögonblicksbilder för skrivna celler; XLSX-sparningen bevarar detta ägarskap i pivotdefinitionen, så senare uppdateringar kan validera det efter återöppning

Ändrat typat innehåll eller en borttagen icke-tom ägd cell avslår hela uppdateringen; talsubtyper delar en kanonisk numerisk representation, medan text, Boolean-värden och fel behåller åtskilda identiteter

Krymper man eller flyttar ett resultat rensas bara oförändrade ägda värden som inte längre produceras; befintliga cellobjekt, formatering och kommentarer finns kvar, och orelaterade celler förblir utanför ägarskapsmängden

Ändrar man FirstRow eller FirstCol flyttas nästa utdata, medan tidigare ägarskapskoordinater finns kvar för städning; ett tomt resultat rensar ägda värden och behåller en plats med bara ankare

Isolerad förhandsvisning

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

TXLSPivotTable.MakePreview använder oberoende kopior av cachen och vyn, inklusive platshållare för beräknade fält, och kastar dem efter utvärderingen; vanlig Make behåller sitt befintliga beteende med aktiv cache

Skrivaren tar emot nollbaserade rad- och kolumnoffset samt typade värden; returvärdet följer Make:s antal aggregerade celler, vilket är skilt från antalet skrivaranrop; en saknad cache eller skrivare returnerar noll, och utvärderings- eller skrivarundantag propageras

Upringarnas postpredikat och registrerade ägarefilter förblir aktiva i förhandsvisningar, inklusive arbetsbokens Slicer-val; callbacks tar emot den tillfälliga utvärderade vyn och dess tillfälliga cache

TXLSPivotTable.EvaluationSourceTable returnerar den aktiva vyn vid en vanlig utvärdering och den ursprungliga aktiva vyn vid en förhandsvisning; använd den när en callback behöver identifiera en ansluten vy, medan utvärderade poster läses från callbackens tillfälliga Cache

Callbackägare förblir uppringarens ägo; förhandsvisningsobjekt och deras poster får inte behållas efter att callbacken eller förhandsvisningsanropet avslutats

Säkerhetsgränser

Materialisering kräver en vy och en cache registrerade i samma arbetsbok samt en stödd lokal källa av typen rektangel, definierat namn eller tabell; källuppslagningen följer aktuella namn och tabellomfattningar, och ostödda eller olösta källor avslås innan ändringen

Aktuell källgeometri, andra pivotplatser, strukturerade tabeller, frågeresultatsområden, sammanslagna celler och fasta eller dynamiska matriser får inte korsa den nya utdata eller gamla ägda celler som behöver rensas; tabellsummor förblir skyddade även om de exkluderas ur cacheposterna

Validering och utdatamellanlagring körs under ett läslease, följt av det normala skrivlåset för arbetsboken och generationskontrollen; en fryst skrivskyddad arbetsboksvy avslår materialisering utan att byta ut celler eller ändra geometri

Filter måste vara skrivskyddade och följa arbetsbokens vanliga enskild-skrivare-kontrakt; isoleringen hindrar normala förhandsberäkningar från att ändra den aktiva cachen, men godtyckliga callback-skrivningar via separat fångade aktiva objekt kan inte rullas tillbaka

Den här åtgärden materialiserar bibliotekets beräknade resultatslayout; komplett inbyggd pivotlayoutförfattning, skapande av Slicer-gränssnitt och utvärdering av korsfilter utan data förblir separata förmågor