ローカル ピボット キャッシュのライフサイクルとネイティブ レイアウト
バージョン 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 のスライサー ソース、外部キャッシュ、不整合のあるインポート済みドメイン、曖昧な独立同一フィールド マスクは拒否されます。対応するインポート済みビュー 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、描画参照、ネイティブ キャッシュ パーツ、接続をまとめて削除します
クリア モードは、独立したフィルターと呼び出し側の述語を残したまま、このスライサー制限を取り除きます。保持モードは、スライサーを削除する前に現在の制限を通常のピボット メンバー マスクへ引き継ぎます
この操作は成功時に 1、未対応または安全でないバインディングでは -1 を返します。影響を受けるすべてのビューとキャッシュ状態はコミット前に検証とステージングが行われ、同一フィールド所有の曖昧さは推測せずに拒否します
TXLSPivotField.IncludeNewItemsInFilter: Boolean のデフォルトは False です。保持された手動サブセットは、このポリシーを明示的に有効化しない限り新しく追加されたメンバーを除外し、制限のないフィールドはそれらを含めます
そのため保持された選択はソースの成長後も安定し、クリア モードは新しいソース メンバーを含めます。インポート済みと作成済みのどちらのメンバー リストも、同じ将来メンバー非表示ポリシーを直列化します
既存のコレクションの Delete と Clear 操作は、最後にバインドされたスライサー ビューを依然としてガードします。キャッシュと接続された制限を一緒に取り除く必要があるときは、明示的なワークブック操作を使ってください
固定グループ化キャッシュの再構築
更新は、検証済みの基底/親リンクから数値・日付・明示的離散の各グループ識別子をステージングします。レコード列が存在しないインポート済み派生フィールドも含まれます。リンク専用のソース フィールドは、自分でグループ化される代わりに元の値を保持します
対応するドメインは既存のメンバー ハンドル、キャプション、グループ序数を保持します。数値・日付のグループ化はフィールドごとに 1 回の解決と固定のネイティブ グループ アイテム ドメインを使い、日付グループ化は区間 1 を要求します
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 では、ネイティブ キャッシュ済みワークシート出力、読み取り専用クロスフィルター可用性、明示的な履歴メンバー パージ が追加されています。直列化されたネイティブ データなし表示、タイムライン オーサリング、より広いグループ化レイアウトの直列化は、別の受入れ境界を保ちます