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 のスライサー ソース、外部キャッシュ、不整合のあるインポート済みドメイン、曖昧な独立同一フィールド マスクは拒否されます。対応するインポート済みビュー 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 では、ネイティブ キャッシュ済みワークシート出力、読み取り専用クロスフィルター可用性、明示的な履歴メンバー パージ が追加されています。直列化されたネイティブ データなし表示、タイムライン オーサリング、より広いグループ化レイアウトの直列化は、別の受入れ境界を保ちます