ネイティブ ピボット出力、クロスフィルター クエリ、欠落メンバー
ネイティブ キャッシュ済みワークシート出力
function TXLSXWorkbook.MaterializeNativePivotTable( ATable: TXLSPivotTable): Integer; function TXLSXWorkbook.MaterializeNativePivotTable( ATable: TXLSPivotTable; AAdoptExisting: Boolean): Integer;
この操作は、ワークシート値と出力所有権を一緒にコミットする前に、完全なネイティブ コンパクト・表形式・アウトライン レポート グリッドと、その位置、rowItems、colItems、データ軸メタデータをステージングします。成功で 1、未対応状態や衝突では診断付きの -1 を返します
対応する空でないローカル ビューは、現在のフィルター、正確なキャッシュ メンバー識別子、通常の階層、対応するグループ化ドメイン、デフォルトまたはカスタム小計、どちらかの対応データ軸を保持します。ネイティブ グリッドは元の集計値を使い、表示された平均などの非加算的結果を再結合しません
既存のセル オブジェクトと書式は利用可能なまま、レポートの縮小や移動は変更されていない以前所有値だけをクリアします。編集済み出力、ソース重なり、結合、数式、配列、他のレポートは変更の前に拒否されます
インポート済みスカラー出力には AAdoptExisting=True による明示的な引き取りが必要です。以後の更新は、保存と再オープン後も含めて、永続化されたセル単位の所有権を使います
この操作は現在のキャッシュ レコードを読み、ソース データの更新や数式の再計算は行いません。ワークシートには既に実際のステージング済みネイティブ結果が含まれるため、Cache.RefreshOnLoad=False でも問題ありません
呼び出し側のレコード フィルター コールバックは切り離されたプレビューに参加しますが、OOXML 表現を持ちません。Excel の明示的なネイティブ更新は任意のコールバック制限を再現できず、対応する永続化手動フィルターとスライサー フィルターはシリアライズ表現を保持します
対応する SUM 計算キャッシュ フィールドとキャッシュ所有計算アイテムは、ネイティブなピボット計算フィールドとキャッシュ所有のアイテム で説明するコンテキスト合計契約を使います。カスタム メンバー キャプションと未対応レイアウトの組み合わせは明示的に拒否され、対応する生成 raw レイアウトは無関係な XML と現在のメンバー マスクを保持します
TryXLSXMakeNativePivotLayout(const Xml: WideString; Table: TXLSPivotTable; AWriter: TlxPivotResultWriter; out ResultXml, Reason: WideString): Boolean は lxPivotXml の低レベル ステージング レイアウト ヘルパーです
そのライターは、空白セルも含めてテーブル アンカーからのゼロ始まりオフセットで、レポート矩形全体を行優先順で受け取ります。XML とグリッドのプリフライトは最初のコールバックの前に完了しますが、コールバックが例外を出した場合、呼び出し側所有の書き込みはロールバックできません
ワークブック ファサードは、トランザクション方式のセル更新用に切り離されたキャプチャ ライターを供給します。ステージング済みプレビューとネイティブ Variant グリッドの合計は 4194304 セルに制限されます
ネイティブ プレビュー パスは、TXLSPivotTable.MakePreview の省略可能な AUseNativeGrandTotals パラメーターでネイティブ総計の向きを要求できます。既存の単一ライター呼び出しとレイアウト ライター呼び出しは以前の動作を保ちます
レイアウトと反復ラベル
マテリアライズの前に、レポートと各行フィールドに Compact と Outline を設定します。表形式フィールドは両フラグを False、アウトライン フィールドは Compact=False と Outline=True、コンパクト フィールドは両フラグを True にします
property TXLSPivotField.RepeatLabels: Boolean;
RepeatLabels のデフォルトは False で、フィールドと一緒に独立してコピーされ、ネイティブの x14:pivotField fillDownLabels 拡張を読み書きします。表形式とアウトライン出力で祖先ラベルを繰り返しますが、コンパクトとアウトラインの両フラグが有効なフィールドには効果がありません
個別の行フィールドはそれぞれ独自の物理列を受け取ります。隣接するコンパクト アウトライン フィールドはラベル列を共有します。行上の複数メジャーは CompactData に従い、列上の複数メジャーは独立したデータ キャプションと総計を保持します
デフォルトの表形式小計はグループの下に現れます。アウトラインの SubtotalTop は上か下の位置を選択します。行上のメジャーはグループの下に別の集計行を使い、各メジャーのキャプションを保持します
ネイティブ キャッシュ済み出力は、存在しない行・列交差を空白のままにし、実際の数値ゼロは保持します。ネイティブ オプションなしの通常 Make とプレビューは以前の空結果動作を保ちます
非アクティブ フィールドとメジャー フィールドはステージング済みネイティブ メタデータの中でレポート レイアウトを継承するため、Excel の明示的な更新は適切なフィールド キャプションとデータ キャプションを保持します。この操作はライブ フィールド設定と既存の所有チェックを保存します
インポート済み反復ラベル拡張は名前空間エイリアスを受け付けます。拡張要素自体での宣言も含まれます。未知の無関係 XML はネイティブ マテリアライズ パスによって引き続き保持されます
グループ化メンバー、軸順序、カスタム小計
ネイティブ出力は、キャッシュの既存型付きグループ化メタデータで表現される完全な数値範囲グループ、日付グループ、手動メンバー グループをサポートします。生成されたラベルは、Unicode やローカライズされた日付キャプションも含めて、インポートされた GroupItemLabels を正確に保持します
グループ化は切り離されたキャッシュ上で評価され、ライブ キャッシュのレコード、共有アイテム ハンドル、グループ識別子を保持します。無効な境界、ゼロ区間、不完全なドメイン、未対応のグループ アイテム値型は、ワークシート出力が変わる前に拒否されます
既存のゼロ始まり TXLSPivotField.Position が、安定したネイティブ行・列軸順序を決めます。同じ位置は作成時のフィールド順を保持するため、デフォルト位置で新規作成したフィールドは以前の順序を保ちます
ネイティブ インポートの Year/Month 階層と親/手動メンバー階層は明示的な軸順序を保持し、キャッシュ フィールド インデックス、ビュー フィールド インデックス、表示計算の基底識別子は変わりません。手動グループは、グループ ラベルやキャッシュ インデックスを並べ替えるのではなく、明示的なピボット アイテム順に従います
カスタム行小計は xlpsSum、xlpsCount、xlpsAverage、xlpsMax、xlpsMin、xlpsProduct、xlpsCountNumbers、xlpsStdDev、xlpsStdDevP、xlpsVar、xlpsVarP をサポートします。複数選択関数、表形式・アウトライン フィールド、行上のメジャーも含まれます
各関数は独自の小計スコープで元のソース レコードを集計します。ステージング済み行メタデータは選択された関数を独立に識別し、非加算計算や空・エラー結果に対する Excel の明示的更新動作を保持します
インポート済みのカスタム小計選択は、ネイティブ XML に defaultSubtotal がなくても暗黙の自動小計を除外します。アプリケーションは xlpsDefault をカスタム関数と組み合わせてはいけません。そのような曖昧な型付き要求は変更の前に拒否されます
小計付きの複数列フィールド レベル、未対応のコンパクト データ軸組み合わせ、折りたたまれたメンバー、カスタム キャプションは、このネイティブ出力契約の対象外です。計算フィールドと計算アイテムには、より狭い SUM とメンバー識別子の要件があり、raw 保持は機能の再計算やマテリアライズのサポートを意味しません
保存、再オープン、再マテリアライズは対応するグループ化、軸順序、小計識別子を保持します。インポート済みネイティブ ビューと独立コピーの型付きキャッシュも、初回オープンと明示的更新の両方で Excel に対して検証済みです
ネイティブ表示計算
MaterializeNativePivotTable を呼ぶ前に、各通常データ フィールドの ShowDataAs か ExtendedShowDataAs を設定します。基本と拡張の表示モードは相互排他です
基本モードには、差分、基準アイテムに対する比率、比率差分、累計、行・列・総計に対する比率、インデックスがあります。拡張モードには、親行・親列・選択親に対する比率、累積比率、昇順・降順の密な順位があります
BaseField は、比較、累計、選択親比率、順位に使うゼロ始まりピボット フィールド インデックスです。比較はゼロ始まりの BaseItem 位置を使うか、実効表示順での隣接可視メンバーとして xlPivotBaseItemPrevious と xlPivotBaseItemNext を使います
親行・親列比率は BaseField を使わず、対応する最も内側の軸フィールドを選びます。対応する軸がなければ、それらの結果は空白になります
単純比率は、非加算の平均も含めて、該当スコープの元の集計で割ります。累積比率は表示メンバーの集計を合計し、最も内側の基準フィールドでは元の軸合計を使い、外側の基準フィールドでは残りの対応メンバー全体の合計を使います。そのため平均が 100 パーセントを超えることもあります
ネイティブ順位は先行する異なる集計値を数えます。比較は、存在しない交差、欠落した基準、ゼロ除算、前・次の境界に対する Excel の空白とエラーの動作を保持します。単純比率は、存在しない分子をゼロとして扱います
総計は選択されたモードのネイティブ セマンティクスに従います。比較軸や累計軸に沿った空白の総計も含まれます。表示モードの変更は、レポートのトランザクション所有、衝突チェック、予算チェックを保持します
保存と再オープンは選択された基本・拡張モードと基準識別子を保持し、ステージング済みネイティブ メタデータは明示的な Excel 更新をサポートします。ネイティブ オプションなしの通常 Make とプレビューは既存の計算契約を保ちます
スライサーのクロスフィルター可用性
property TXLSXSlicerCache.ItemHasData[Index: Integer]: Boolean;
この読み取り専用クエリは、現在の対応する非 OLAP キャッシュ レコードを評価します。このスライサー自身の選択は無視し、他のスライサー選択、手動フィルター、呼び出し側述語、適用可能な集計フィルターは保持します
可用性は接続ビュー全体の和集合です。一致するレコードのない履歴メンバーはデータなし、空白メジャーはデータなし、空でないテキスト、Boolean、ゼロ、エラー、日付のメジャーは、検証済みネイティブ契約の下でデータありと数えられます
クエリは読み取りリースと切り離されたレコード プレビューを使い、ライブ ハンドルと選択を保持し、FormulaArrayMemoryLimit を守ります。コールバック失敗、再入、無効なバインディング、未対応の集計計算メンバーは、ライブ変更をコミットせずに例外を発生させます
可用性の照会は、キャッシュの更新、数式の再計算、ファイル I/O、直列化ネイティブ データなしフラグの更新を行いません。アプリケーションは、この読み取り専用操作からネイティブ UI 状態を推測すべきではありません
TlxPivotRecordWriter = procedure(ATable: TXLSPivotTable; ARecordIndex: Integer) of object; function TXLSPivotTable.MakeRecordPreview(AWriter: TlxPivotRecordWriter; AFilterOwner: TObject = nil; AFilter: TlxPivotRecordFilter = nil): Integer;
高度なレコード コールバックは、対応する単純フィルターと集計フィルターの適用後に、切り離されたプレビューとゼロ始まりレコード インデックスを受け取ります。EvaluationSourceTable は元のビュー識別子を保持し、戻り値は出力されたレコード数です
置換フィルターが差し替えるのは、指定されたオーナーの登録コールバックだけです。他のオーナーと外部述語は有効のまま、nil でない置換コールバックには nil でないオーナーが必要です
明示的な履歴メンバー パージ
Removed := Workbook.PurgePivotCacheMissingItems(
Pivot.CacheId, 0);
if Removed < 0 then
raise Exception.Create('The cache member purge was rejected');
TXLSXWorkbook.PurgePivotCacheMissingItems(ACacheId: Integer; ARetainMissingItemsPerField: Integer = 0): Integer は、対応するリンク ビューとスライサーの完全な検証と再マッピングの後に、未使用メンバーを削除します
戻り値は全フィールドで削除された共有アイテムの合計数、成功した no-op ではゼロ、診断 1402 付きの -1 です。現在のレコードは参照されるすべてのメンバーを保持し、さらにフィールドごとに要求された数まで、元の共有アイテム インデックスが大きい方から未使用メンバーが保持されます
保持されたメンバーは元の相対順序とオブジェクト ハンドルを保ち、論理インデックスは圧縮されます。リンクされたフィールド/アイテム ハンドル、手動の非表示・詳細フラグ、アクティブなページ/比較メンバー、スライサー選択は同一性を保ちます
ドメイン フラグと境界は保持されたドメインから再計算されます。対応するインポート済み圧縮行/列とページ位置は明示的に再マッピングされ、総計ダミー参照とデータ疑似フィールド序数は変わりません
通常の完全なローカル ワークシート キャッシュがサポート対象です。グループ化、計算、メンバー プロパティ、OLAP、外部、不完全、曖昧なキャッシュと、未対応の不透明識別子メタデータは変更の前に拒否されます
アクティブなページ/比較メンバーの削除、選択されたスライサー サブセット全体の削除、以前空でなかった実効交差の削除はアトミックに拒否されます。型付き再構築で失われるプリミティブなメンバー属性も拒否します
既知のマテリアライズ所有拡張は、座標と型付き値トークンにキャッシュ メンバー インデックスを含まないため変更されません。無関係な不透明拡張が安全と見なされることはありません
パージは、ソース データの更新、ワークシート レポート セルの書き換え、レコード コールバックの呼び出し、MissingItemsLimit メタデータの自動適用を行いません。この操作が明示的に要求されない限り、更新は追加専用のままです
高度なパージ調整
TXLSPivotCache._PrepareMissingItemPurge は不透明な TXLSPivotCachePurgePlan を返します。アプリケーションは通常、ワークブック ファサードを使い、すべてのリンク ビューとスライサーが含まれるようにしてください
MapItem と RemainingItemCount はキャッシュ再マッピングを検査し、StagePivotField はリンク フィールドを登録してステージ インデックスを返し、MapViewItemPosition はそのフィールドのシリアライズ位置マッピングを検査します。削除されたメンバーは -1 にマップされ、RemovedCount が削除合計数を報告します
Validate は元のスキーマ、レコード、フィールド/アイテム所有識別子、ステージング済みビュー選択をチェックします。Commit は再度検証し、最初のライブ交換の後は割り当てもコールバックもなしで準備済み所有を移転します
プランは切り離されたスナップショットを所有し、可変のステージング キャッシュを非公開に保ち、元のキャッシュやビュー オブジェクトは決して所有しません。それらの元オブジェクトは、プランの Destroy がステージングを解放するまで生存させ、各プランのコミットは 1 回だけにしてください
拒否されたフィールド ステージングはそのステージをロールバックするため、プランは再利用できます。準備後の未対応変更はコミットの前に拒否されます