HotXLS 문서

로컬 피벗 캐시 수명 주기와 네이티브 레이아웃

버전 2.384.94는 공유 캐시 뷰, 로컬 non-OLAP 피벗 Slicer 만들기와 명시적 제거, 그룹화 캐시 재구성, 제한된 네이티브 레이아웃 메타데이터 생성기를 추가합니다

공유 뷰와 Slicer 만들기

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 Slicer 소스, 타사 캐시, 일관성 없는 가져온 도메인, 모호한 같은 필드 독립 마스크는 거부됩니다. 지원되는 가져온 뷰 XML은 새 UI를 덧붙일 때 무관한 확장을 유지합니다

명시적 제거와 미래 멤버

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, 드로잉 참조, 네이티브 캐시 파트, 연결을 함께 제거합니다

clear 모드는 이 Slicer 제한을 없애면서 독립적인 필터와 호출자 술어는 유지합니다. preserve 모드는 Slicer를 제거하기 전에 현재 제한을 평범한 피벗 멤버 마스크로 넘깁니다

이 작업은 성공 시 1, 지원되지 않거나 안전하지 않은 바인딩이면 -1을 반환합니다. 영향을 받는 모든 뷰와 캐시 상태는 커밋 전에 검증·스테이징되고, 같은 필드 소유권의 모호성은 추측 없이 거부됩니다

TXLSPivotField.IncludeNewItemsInFilter: Boolean은 기본값 False입니다. 유지된 수동 부분집합은 이 정책을 명시적으로 켜기 전에는 새로 덧붙인 멤버를 제외하고, 제한 없는 필드는 그들을 포함합니다

따라서 보존된 선택은 소스가 늘어난 뒤에도 안정적으로 유지되는 반면, clear 모드는 새 소스 멤버를 포함합니다. 가져온 멤버 목록과 작성된 멤버 목록은 같은 미래 멤버 숨김 정책을 직렬화합니다

기존 컬렉션 Delete와 Clear 작업도 마지막으로 바인딩된 Slicer 뷰는 여전히 보호합니다. 캐시와 연결된 제한을 함께 제거해야 한다면 명시적인 통합 문서 작업을 사용하세요

고정 그룹화 캐시 재구성

새로 고침은 검증된 기본/부모 링크에서 숫자·날짜·명시적 이산 그룹 식별을 스테이징하며, 레코드 열이 없는 가져온 파생 필드도 포함됩니다. 링크 전용 소스 필드는 자체 그룹화 대신 원래 값을 유지합니다

지원되는 도메인은 기존 멤버 핸들, 캡션, 그룹 서수를 유지합니다. 숫자·날짜 그룹화는 필드당 한 번의 해석과 고정된 네이티브 그룹 항목 도메인을 사용하고, 날짜 그룹화는 간격 1을 요구합니다

TXLSPivotCacheField.GroupAutoStart와 TXLSPivotCacheField.GroupAutoEnd는 기본값 True로 가져온 경계 정책을 유지합니다. 도메인 확장이나 재그룹화가 필요한 새 값은 변경 전에 거부됩니다

이산 그룹은 모든 소스 멤버에 대한 기존 매핑을 요구합니다. 순환 부모, 잘못된 타입 지정 도메인, 중복 문자열 캡션, 계산된 기본, 멤버 속성 필드, 지원되지 않는 부모 해석은 트랜잭션 방식으로 거부됩니다

평범한 Make는 지원되는 낡았거나 누락된 파생 레코드 값을 재구성하고, MakePreview는 분리된 복사본에서만 그렇게 합니다. 저장은 파생 네이티브 도메인에서 내부 플레이스홀더 공유 항목을 생략하고 선언된 그룹 항목 인덱스를 정확히 내보냅니다

네이티브 레이아웃 메타데이터 미리 보기

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

lxPivotXml 헬퍼는 정확한 필드·캐시 멤버 식별로 지원되는 비어 있지 않은 로컬 컴팩트 뷰의 rowItems, colItems, 축 메타데이터, 위치를 스테이징합니다. 평범한 계층, 기본 위·아래 subtotal, 어느 쪽 데이터 축이든 지원합니다

이 메타데이터 전용 작업에는 명시적인 Cache.RefreshOnLoad=True가 필요합니다. 알 수 없는 XML은 보존되고, 그룹화·계산 필드, 커스텀 subtotal, 지원되지 않는 레이아웃, 일관성 없는 가져온 식별을 표현할 수 없을 때는 원본 XML과 영어 이유를 반환합니다

이 헬퍼는 워크시트 셀을 다시 쓰거나 살아 있는 테이블 플래그를 바꾸지 않습니다. 캐시된 워크시트 출력이 필요한 호출자는 적절한 writer와 별도로 지원되는 구체화 작업을 공급해야 합니다

TXLSPivotTable.MakePreview(AWriter: TlxPivotResultWriter; ALayoutWriter: TlxPivotLayoutWriter): Integer는 분리된 미리 보기에서 동기 레이아웃 콜백을 공급하며 원래 EvaluationSourceTable 식별을 유지합니다

TlxPivotLayoutWriter는 원래 테이블, 행/열 축, 복사된 필드 인덱스·캐시 항목 인덱스 벡터, TlxPivotLayoutItemKind, subtotal 종류, 접두 길이를 받습니다. xlplikData, xlplikSubtotal, xlplikGrand는 캡션을 해석하지 않고 집계 식별을 구별합니다

벡터는 TlxPivotLayoutIndices를 사용하며 콜백 동안에만 유효합니다. 예외는 전파되고, 기존 Make와 단일 writer MakePreview 동작도 계속 쓸 수 있습니다

TXLSPivotTables._AddOwned(ATable: TXLSPivotTable)은 소유권 이전 전에 컬렉션 용량을 확보하고 내부 트랜잭션 뷰 부착을 지원합니다. 애플리케이션은 보통 워크시트 작성 메서드를 사용해야 합니다

경계

버전 2.384.95는 네이티브 캐시 워크시트 출력, 읽기 전용 크로스 필터 가용성, 명시적 과거 멤버 제거를 추가합니다. 직렬화된 네이티브 데이터 없음 표시, Timeline 작성, 더 넓은 그룹화 레이아웃 직렬화는 별도의 수용 경계로 남습니다