HotXLS 文件 / API 參考

樞紐分析時間軸與交叉分析篩選器資料狀態

自版本 2.384.98 起,可透過 XLSX 活頁簿外觀層用於受支援的本機非 OLAP 樞紐分析表

建立與連接時間軸

TimelineCache := Workbook.CreatePivotTimelineCache(Pivot, 'EventDate');
if TimelineCache = nil then
  raise Exception.Create('The Timeline cache was rejected');
TimelineView := ReportSheet.Timelines.Add(TimelineCache, 2, 7, 7, 12);
if TimelineView = nil then
  raise Exception.Create('The Timeline view was rejected');
if TimelineCache.SetDateRange(EncodeDate(2026, 1, 1),
    EncodeDate(2026, 1, 31)) < 0 then
  raise Exception.Create('The Timeline selection was rejected');

TXLSXWorkbook.CreatePivotTimelineCache(ATable: TXLSPivotTable; const AFieldName: WideString): TXLSXTimelineCache 會建立或重用一個驗證過的日期欄位快取及其必要的套件識別;失敗在提交暫存狀態之前回傳 nil

TXLSXWorkbook.TimelineCaches 公開 TXLSXTimelineCaches,具有 Count、以零為基底的 Items[Index] 與不分大小寫的 FindByName;這些快取由活頁簿持有

TXLSXTimelineCache.Name 識別快取,SourceName 識別其來源欄位,IsNonOlapPivot 識別驗證過的受支援繫結;已匯入的不受支援快取保留其原始 XML

TXLSXTimelineCache.ConnectPivotTable(ATable: TXLSPivotTable): Integer 把同一個 PivotCache 中另一個持有的檢視連接到相容的日期欄位;成功回傳 1,包括既有的連接,被拒回傳 -1

TXLSXTimelineCache.SetDateRange(AStartDate, AEndDate: TDateTime): Integer 使用含端的整天邊界,回傳 1 或 -1;邊界必須是整數日期,從 1900 年 1 月 1 日到 9999 年 12 月 31 日,且為遞增順序

受支援的活頁簿使用 1900 日期系統;Date1904 撰寫與小數的選取邊界會被拒,而來源日期值可以保留時間成分,落在選取結束日當天的記錄仍然符合條件

TXLSXTimelineCache.SelectionActive、StartDate 與 EndDate 公開作用中的邊界;ClearSelection: Integer 清空這些邊界而不改變其他篩選,回傳 1 或 -1

選取會與其他交叉分析篩選器、手動或頁面篩選以及呼叫端述詞取交集;這些操作不重新整理來源快取、不重算公式,也不改寫既有的工作表報表儲存格

時間軸檢視與移除

TXLSXWorksheet.Timelines 公開由工作表持有的 TXLSXTimelines 集合,具有 Add、FindByName、以零為基底的 Items[Index]、Count、Delete(Index) 與 Clear;刪除只移除 UI,保留其共用快取與選取

TXLSXTimelines.Add(ACache: TXLSXTimelineCache; ARow1, ACol1, ARow2, ACol2: Integer): TXLSXTimeline 接受持有的受支援快取與有序的 1 為基底工作表矩形,回傳持有的檢視或 nil

TXLSXTimeline.Name 是唯讀,Cache 識別其共用快取,Caption 變更顯示標籤;Level 接受 0 為年、1 為季、2 為月或 3 為日

TXLSXTimeline.SetBounds 變更由 FromRow、FromCol、ToRow 與 ToCol 公開的 1 為基底矩形;無效幾何、不受支援的繫結或分組的繪圖幾何會在修改前擲出

TXLSXDrawingObject.Timeline 對繪圖種類 xlsxDrawingTimeline 回傳關聯的檢視;直接且不受支援的繪圖轉換仍有防護

Status := Workbook.RemoveTimelineCache(TimelineCache,
  xlsxSlicerPreserveCurrentSelection);

TXLSXWorkbook.RemoveTimelineCache(ACache: TXLSXTimelineCache; AMode: TXLSXSlicerRemovalMode): Integer 一起暫存連接的篩選、UI、名稱與套件清理,回傳 1 或 -1

xlsxSlicerClearSelection 移除選取;xlsxSlicerPreserveCurrentSelection 只有在日期欄位已經位於每個連接檢視的列軸或欄軸上時,才把作用中的選取保留為整天日期比較

未使用或僅頁面的日期欄位會以原子方式拒絕保留選取的移除;若要的就是這種行為,請改用明確清除選取的移除

已匯入的篩選只在每個連接、繼承的命名空間與精確的持有篩選來源都驗證通過後才正規化;不透明的同欄位屬性或子元素、外部命名空間、外部繫結與不受支援的多 UI 圖形都保留其 XML 並拒絕修改

原生具體化會把當前時間軸選取與報表中繼資料及儲存格一起暫存,只移除精確相符的已儲存持有篩選簽章;任意的回呼限制沒有原生 XML 表示法,Excel 重新整理也無法重現

OOXML 儲存保留原生的關聯型別、原始路徑與無關擴充;Strict 僅快取儲存會被拒,ODS 轉換會回報時間軸損失,XLSB 值與樣式子集則拒絕時間軸

明確的原生交叉分析篩選器資料狀態重新整理

function TXLSXSlicerCache.RefreshItemDataStates: Integer; overload;
function TXLSXSlicerCache.RefreshItemDataStates(
  AMaxEvaluationSteps: Integer; ACancelFlag: PBoolean = nil): Integer; overload;

這個操作會評估並暫存完整的原生無資料向量,然後在活頁簿寫入防護下提交;成功回傳 1,被拒回傳 -1,且不改變序列化的項目旗標或選取

它忽略這個交叉分析篩選器自己的選取,同時與其他交叉分析篩選器和時間軸選取、手動或頁面篩選、受支援的彙總篩選以及呼叫端述詞取交集;可用性是各受支援連接檢視的聯集

沒有符合記錄的被選歷史成員會拿到原生無資料旗標,同時保留其選取;穩定的快取 ID、原始項目傳輸順序與無關 XML 保持完整

預設的累計步驟上限為 1000000;零表示不限步數,負值被拒,FormulaArrayMemoryLimit 則累計約束中繼資料暫存加上所有連接檢視的預覽

取消、回呼例外或重入、凍結檢視、不受支援的繫結、耗盡的預算或已改變的評估狀態,都會在提交旗標之前被拒;呼叫端回呼對共用模型做出的獨立變更仍算呼叫端的變更,會導致重新整理被拒

TXLSXSlicerCache.CrossFilter 在修改防護下讀寫原生的表格交叉篩選設定;showItemsWithDataAtTop 啟用原生的資料優先排序,而不改寫項目的傳輸順序

ItemHasData 仍是唯讀查詢;儲存不會呼叫評估器,也不隱含更新無資料旗標,因此當原生 UI 狀態需要重新整理時,請在儲存前明確呼叫 RefreshItemDataStates

進階日期篩選語意

TXLSPivotFilter.UseWholeDay 為受支援的日期篩選要求整天日期比較;時間軸產生的保留選取會使用它,普通日期篩選則保留先前對時間敏感的行為

周邊的重新整理與擁有權契約,請見原生樞紐分析輸出與唯讀交叉分析篩選器可用性以及本機快取與交叉分析篩選器生命週期