HotXLS 文件

本機樞紐分析快取生命週期與原生版面

版本 2.384.94 新增共用快取檢視、本機非 OLAP 樞紐分析交叉分析篩選器的建立與明確移除、群組快取重建,以及一個有界的原生版面中繼資料產生器

共用檢視與交叉分析篩選器建立

SecondPivot := Sheet.AddPivotTable(FirstPivot.Cache, 20, 1, 'SecondView');
Cache := Workbook.CreatePivotSlicerCache(FirstPivot, 'Category');
if Cache.ConnectPivotTable(SecondPivot) <> 1 then
  raise Exception.Create('The second view could not be connected');
Slicer := Sheet.Slicers.Add(Cache, 1, 6, 8, 8);

TXLSXWorksheet.AddPivotTable(ACache: TXLSPivotCache; DestRow, DestCol: Integer; const Name: WideString): TXLSPivotTable 為這個活頁簿持有的快取建立另一個檢視;附加檢視之前會驗證擁有權、幾何與名稱

TXLSXWorkbook.CreatePivotSlicerCache(ATable: TXLSPivotTable; const AFieldName: WideString): TXLSXSlicerCache 會建立或安全地重用受支援的來源欄位快取,而 TXLSXSlicerCache.ConnectPivotTable(ATable: TXLSPivotTable): Integer 連接既有的本機共用快取檢視

TXLSXSlicers.Add(ACache: TXLSXSlicerCache; ARow1, ACol1, ARow2, ACol2: Integer): TXLSXSlicer 以明確含端的 1 為基底儲存格邊界建立工作表 UI;來源名稱、快取部分、繪圖參照與檢視成員資格都在修改前暫存

已分組、計算與 OLAP 的交叉分析篩選器來源、外部快取、不一致的已匯入定義域,以及有歧義的同欄位獨立遮罩都會被拒絕;附加新 UI 時,受支援的已匯入檢視 XML 會保留無關的擴充

明確移除與未來成員

if Workbook.RemoveSlicerCache(Cache, xlsxSlicerPreserveCurrentSelection) <> 1 then
  raise Exception.Create('The Slicer cache could not be removed');

TXLSXSlicerRemovalMode 有 xlsxSlicerClearSelection 與 xlsxSlicerPreserveCurrentSelection 兩種;TXLSXWorkbook.RemoveSlicerCache(ACache: TXLSXSlicerCache; AMode: TXLSXSlicerRemovalMode): Integer 會一起移除綁定的 UI、繪圖參照、原生快取部分與連接

清除模式移除這條交叉分析篩選器限制,但保留獨立篩選與呼叫端的述詞;保留模式會在移除交叉分析篩選器之前,把它目前的限制轉移成普通的樞紐成員遮罩

操作成功回傳 1,不受支援或不安全的繫結回傳 -1;所有受影響的檢視與快取狀態都在提交前驗證並暫存,同欄位擁有權有歧義時直接拒絕、不做猜測

TXLSPivotField.IncludeNewItemsInFilter: Boolean 預設 False;保留的手動子集會排除新附加的成員,除非明確啟用這個政策,而不受限的欄位則把它們包含進來

因此保留的選取在來源成長後仍然穩定,而清除模式會納入新的來源成員;已匯入與撰寫的成員清單會序列化同一套未來成員隱藏政策

既有的集合 Delete 與 Clear 操作仍會防護最後一個綁定的交叉分析篩選器檢視;當快取與其連接的限制必須一起移除時,請使用明確的活頁簿操作

固定群組快取重建

重新整理會從驗證過的基底/父系連結暫存數值、日期與明確離散的群組識別,包括記錄欄缺席的已匯入衍生欄位;只有連結的來源欄位保留其原始值,自己不被分組

受支援的定義域保留既有的成員控制代碼、標題與群組序數;數值與日期群組對每個欄位只用一次解析,並使用固定的原生群組項目定義域,日期群組則要求區間為一

TXLSPivotCacheField.GroupAutoStart 與 TXLSPivotCacheField.GroupAutoEnd 預設 True,保留已匯入的邊界政策;需要擴充定義域或重新分組的新值會在修改前被拒絕

離散群組要求每個來源成員都有既有映射;循環父系、無效的具型別定義域、非唯一的字串標題、計算基底、成員屬性欄位與不受支援的父系解析都會以交易方式拒絕

普通的 Make 會重建受支援的過時或缺失衍生記錄值,MakePreview 則只在分離副本上這麼做;儲存會把內部預留位置的共用項目從衍生的原生定義域中省略,只輸出宣告的群組項目索引

原生版面中繼資料預覽

function TryXLSXGeneratePivotLayout(const Xml: WideString;
  Table: TXLSPivotTable; out ResultXml, Reason: WideString): Boolean;

lxPivotXml 輔助函式會為受支援的非空本機精簡檢視暫存 rowItems、colItems、軸中繼資料與位置,使用精確的欄位與快取成員識別;支援普通階層、預設的頂端或底端小計,以及任一資料軸

這個僅中繼資料的操作要求明確的 Cache.RefreshOnLoad=True;它保留未知 XML,在分組或計算欄位、自訂小計、不受支援的版面或不一致的已匯入識別無法表達時,回傳原 XML 加上英文原因

這個輔助函式不會改寫工作表儲存格,也不改變現用資料表的旗標;需要快取工作表輸出的呼叫端,必須自己提供合適的寫入器與另一個受支援的具體化操作

TXLSPivotTable.MakePreview(AWriter: TlxPivotResultWriter; ALayoutWriter: TlxPivotLayoutWriter): Integer 會從分離的預覽提供同步的版面回呼,並保留原本的 EvaluationSourceTable 身分

TlxPivotLayoutWriter 收到原始資料表、列欄軸、複製的欄位索引與快取項目索引向量、TlxPivotLayoutItemKind、小計種類與前綴長度;xlplikData、xlplikSubtotal 與 xlplikGrand 不必解析標題就能區分彙總身分

這些向量使用 TlxPivotLayoutIndices,只在回呼期間有效;例外會照常往外傳,既有的 Make 與單寫入器 MakePreview 行為繼續可用

TXLSPivotTables._AddOwned(ATable: TXLSPivotTable) 在擁有權轉移前保留集合容量,並支援內部的交易式檢視附加;應用程式平常應使用工作表撰寫方法

邊界

版本 2.384.95 新增原生快取工作表輸出、唯讀交叉篩選可用性與明確的歷史成員清除;序列化的原生無資料顯示、時間軸撰寫,以及更廣的分組版面序列化仍保留各自的接受邊界