피벗 Timeline과 Slicer 데이터 상태
버전 2.384.98부터 XLSX 통합 문서 퍼사드를 통해 지원되는 로컬 non-OLAP 피벗 테이블에서 사용할 수 있습니다
Timeline 만들기와 연결
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는 Count, 0 기반 Items[Index], 대소문자 구분 없는 FindByName을 갖춘 TXLSXTimelineCaches를 노출합니다. 이 캐시들은 통합 문서가 소유합니다
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을 반환합니다
선택은 다른 Slicer, 수동·페이지 필터, 호출자 술어와 교차합니다. 이 작업들은 소스 캐시를 새로 고치거나 수식을 재계산하거나 기존 워크시트 보고서 셀을 다시 쓰지 않습니다
Timeline 뷰와 제거
TXLSXWorksheet.Timelines는 워크시트 소유의 TXLSXTimelines 컬렉션을 노출하며 Add, FindByName, 0 기반 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을 유지한 채 변경을 거부합니다
네이티브 구체화는 현재 Timeline 선택을 보고서 메타데이터·셀과 함께 스테이징하고 정확히 저장된 소유 필터 시그니처만 제거합니다. 임의의 콜백 제한은 네이티브 XML 표현이 없어 Excel 새로 고침이 재현할 수 없습니다
OOXML 저장은 네이티브 관계 타입, 원래 경로, 무관한 확장을 보존합니다. 캐시 전용 Strict 저장은 거부되고, ODS 변환은 Timeline 손실을 보고하며, XLSB 값·스타일 부분집합은 Timeline을 거부합니다
명시적인 네이티브 Slicer 데이터 상태 새로 고침
function TXLSXSlicerCache.RefreshItemDataStates: Integer; overload; function TXLSXSlicerCache.RefreshItemDataStates( AMaxEvaluationSteps: Integer; ACancelFlag: PBoolean = nil): Integer; overload;
이 작업은 완전한 네이티브 데이터 없음 벡터를 평가·스테이징한 뒤 통합 문서 쓰기 가드 아래 커밋합니다. 성공은 1, 거부는 직렬화된 항목 플래그나 선택을 바꾸지 않고 -1을 반환합니다
이 작업은 이 Slicer 자체의 선택은 무시하면서 다른 Slicer·Timeline 선택, 수동·페이지 필터, 지원되는 집계 필터, 호출자 술어를 교차합니다. 가용성은 지원되는 연결 뷰 전체의 합집합입니다
유효한 레코드가 없는 선택된 과거 멤버는 선택을 유지한 채 네이티브 데이터 없음 플래그를 받습니다. 안정적인 캐시 ID, 원래 항목 와이어 순서, 무관한 XML은 그대로입니다
기본 누적 단계 한도는 1000000입니다. 0은 무제한 단계를 뜻하고 음수는 거부되며, FormulaArrayMemoryLimit는 메타데이터 스테이징과 모든 연결 뷰 미리 보기를 누적으로 제한합니다
취소, 콜백 예외·재진입, 고정 뷰, 지원되지 않는 바인딩, 예산 소진, 바뀐 평가 상태는 플래그 커밋 전에 거부됩니다. 호출자 콜백이 만든 독립적인 공통 모델 변경은 호출자의 변경으로 남고 새로 고침 거부의 원인이 됩니다
TXLSXSlicerCache.CrossFilter는 변경 가드 아래에서 네이티브 표 형식 크로스 필터 설정을 읽고 씁니다. showItemsWithDataAtTop은 항목 와이어 순서를 다시 쓰지 않고 네이티브 데이터 우선 정렬을 켭니다
ItemHasData는 읽기 전용 쿼리로 남습니다. 저장이 평가기를 호출하거나 데이터 없음 플래그를 암묵적으로 갱신하지 않으므로, 네이티브 UI 상태를 새로 해야 한다면 저장 전에 RefreshItemDataStates를 명시적으로 호출하세요
고급 날짜 필터 시맨틱
TXLSPivotFilter.UseWholeDay는 지원되는 날짜 필터에 하루 단위 날짜 비교를 요구합니다. Timeline이 만든 보존 선택은 이것을 쓰고, 평범한 날짜 필터는 이전 시각 민감 동작을 유지합니다
주변 새로 고침·소유권 계약은 네이티브 피벗 출력과 읽기 전용 Slicer 가용성, 로컬 캐시와 Slicer 수명 주기를 참조하세요