ピボットテーブルを操作する
このトピックでは、Open XML SDK PivotTableDefinition クラスと、Open XML ファイル形式 SpreadsheetML スキーマとの関係について説明します。 SpreadsheetML ドキュメントを構成するパーツと要素の全体的な構造の詳細については、「 SpreadsheetML ドキュメントの構造」を参照してください。
SpreadsheetML での PivotTable
ISO/IEC 29500 仕様の次の情報では、PivotTableDefinition
(<pivotTableDefinition/>
) 要素について説明します。
ピボットテーブルは、データの集計ビューをわかりやすいレイアウトで簡単に表示します。 何百件、何千件という基になる情報を行と列の軸で集計して、データの背後にある意味を明らかにできます。 ピボットテーブル レポートは、さまざまな方法でデータを整理して要約するために使用されます。 ピボットテーブル レポートの作成では、散在する情報がどのように組み合わさるのかを確認するためにそれらを移動します。 ピボットの行と列は、わずかな操作で別の配置やレイアウトに移動できます。
ピボットテーブル オブジェクトには、行の軸、列の軸、値、およびレポート フィルターの各領域があります。 また、ピボットテーブルは対応するフィールド リスト ウィンドウを持ち、そこにはピボットテーブル領域の 1 つに配置できるデータのすべてのフィールドが表示されます。
ブックは pivotCacheDefinition パーツを参照 (およびその存続期間を支配) し、このパーツは pivotCacheRecords パーツを参照および所有します。 また、ブックはシート パーツも参照しており、ピボットテーブルがシート上にある場合はそのシート パーツが pivotTable パーツ定義を参照および所有します (1 つのシートに複数のピボットテーブルが存在する可能性があります)。 pivotTable パーツは、自らが使用している適切な pivotCacheDefinition を参照します。 複数のピボットテーブルが同じキャッシュを使用する可能性があるため、pivotTable パーツによって pivotCacheDefinition の存続期間が支配されることはありません。
ピボットテーブル パーツでは、シート上のピボットテーブルのレイアウトの詳細について説明します。 これは、ピボットテーブルの行軸、列軸、レポート フィルター、および値領域のフィールドを示します。 また、ピボットテーブルに関する書式設定情報も示します。 条件付き書式がピボットテーブルに適用されている場合は、ピボットテーブル パーツでも表されます。
ピボット キャッシュ定義には、ピボットテーブル内のすべてのフィールドの定義が含まれています。 通常のテーブルに基づいてピボットテーブルを作成すると、テーブル内の各列がピボット キャッシュ定義のフィールドになります。 ピボット キャッシュには、フィールド定義と、そのフィールドで見つかったコンテンツの種類に関する情報が含まれています。 また、ピボット キャッシュ レコード パーツ内のキャッシュされたデータと共にピボット キャッシュを更新できるように、キャッシュ マークアップ内のソース データへの参照も保持されます。
ピボットテーブルに表示されるデータは、2 つの場所に格納されます。 ピボット キャッシュ レコード パーツは、ピボットテーブルの実際のデータを保持します。 ワークシートのテーブル セルには、キャッシュされたバージョンのデータも格納されますが、これは表示のみを目的としています。 ピボット キャッシュ レコード パーツには、2 つの方法のいずれかでデータが格納されます。 ピボットテーブルのデータ領域の一意の値は、インラインでキャッシュされます。 行と列で通常見つかる繰り返し項目が参照されます。 この共有データは、実際にはピボット キャッシュ定義に格納されます。 ピボット キャッシュ レコード パーツ内の各レコードは、N がピボット キャッシュ定義で定義されているフィールドの数と等しい N 個の値で構成されます。
最後の手順は、ピボットテーブル自体の作成です。 ピボットテーブル定義パーツには、どのフィールドがピボットテーブルのどこに表示されるかについての情報が含まれます。 フィールドを配置できる領域としては、行、列、データ、フィルターの 4 つがあります。 フィールドは、ピボット キャッシュ定義内のキャッシュされたフィールドから選択されます。
ブックを開いたときにすぐに使用できるピボットテーブルを作成するには、表のセル用のマークアップも作成する必要があります。 ピボットテーブルはワークシートのセルに表示されるので、それらも構成する必要があります。 また、ドキュメントのオープン時にピボットテーブル セルの更新をユーザーに求めることもできます。
次の表に、 PivotTableDefinition
クラスを操作するときに使用される一般的な Open XML SDK クラスを示します。
SpreadsheetML の要素 | Open XML SDK クラス |
---|---|
<pivotField/> |
PivotField |
<pivotCacheDefinition/> |
PivotCacheDefinition |
<pivotCacheRecords/> |
PivotCacheRecords |
Open XML SDK PivotTableDefinition クラス
Open XML SDK PivotTableDefinition
クラスは、SpreadsheetML ドキュメントの Open XML ファイル形式スキーマで定義されているピボットテーブル定義 (<pivotTableDefinition/>
) 要素を表します。
PivotTableDefinition
クラスを使用して、SpreadsheetML ドキュメント内の個々の<pivotTableDefinition/>
要素を操作します。
ピボットテーブル定義の主な機能は、どのフィールドがピボットテーブルのどの軸にどんな順序で表示されるかに関する情報を保存することです。 ピボットテーブル定義に追加できる設定は他にも多数ありますが、以下では基本的なものについて説明します。
ルート要素では、ピボットテーブルをデータ ソースとして使用できるようにこのテーブルに名前を付けます。 また、ルート要素には、ブック パーツに追加された ID を使用してピボット キャッシュを参照し、ピボットテーブルのデータ領域の上に表示するキャプション ラベルも定義します。 これらの要素はすべて必須です。
PivotTableDefinition
の 3 つのメイン部分は、テーブルの場所、キャッシュされたフィールドの表示情報、キャッシュされたフィールドの位置情報です。 これらの要素と、 PivotTableDefinition
を構成するその他の追加要素の詳細については、ISO/IEC 29500 の仕様に関するページを参照してください。
PivotField クラス
PivotTableDefinition
要素には、PivotField
(<pivotField/>
) 要素が含まれています。 ISO/IEC 29500 仕様の次の情報では、 PivotField
(<pivotField/>
) 要素について説明します。
ピボットテーブル内の単一のフィールドを表します。 この要素には、フィールド内のアイテムのコレクションなど、そのフィールドに関する情報が含まれます。
まず、 pivotFields
要素を使用して、ピボットテーブルに表示されるフィールドのコレクションを定義します。 それぞれのフィールドは、データ ソース内にあるそのフィールドのデータのキャッシュとして機能します。 このキャッシュは定義する必要がありません。 代わりに、 item
要素を default
に設定し、ドキュメントを開いたときにテーブルを更新させることができます。
showAll
属性は、そのデータ ディメンションの特定の要素を非表示にするために使用されます。
どのフィールドが表の一部であるかを定義した後、それらのフィールドはピボットテーブルの 4 つの領域に適用されます。
Pivot Cache Definition クラス
ISO/IEC 29500 仕様の次の情報では、 PivotCacheDefinition
(<pivotCacheDefinition/>
) 要素について説明します。
pivotCacheDefinition パーツは、pivotCacheRecords パーツ内の各フィールドを、フィールド名やそのフィールドに含まれるデータに関する情報も含めて定義します。 また、pivotCacheDefinition パーツは、pivotTable パーツと pivotRecords パーツで共有されるピボット アイテムも定義します。
ピボット キャッシュは、ピボットテーブル内のデータのソースを定義します。これにより、ピボットテーブルを更新でき、そのデータ内のフィールドの一覧が定義されます。 キャッシュでは、実際に使用されるフィールドではなく、ピボットテーブルで使用できるすべてのフィールドが定義されていることに注意してください。 ピボットテーブル定義は、特定のピボットテーブルで使用される使用可能なフィールドを定義します。
データ ソース定義は、ピボットテーブルに表示されるデータを参照します。 ピボットテーブルでは、データ接続が使用できない場合にテーブルを更新できるように、キャッシュ レコード パーツ内のデータも保持されます。 ピボットテーブルのセルに依存してデータを格納することはできません。これらのセル内のデータは本質的に一時的であるため、テーブルをピボットすると変更されます。 ワークシート、データベース、OLAP キューブ、その他のピボットテーブルなど、さまざまな種類のデータ ソースがあります。
キャッシュ定義の最後の部分では、 cacheField
要素を使用してデータ ソースのフィールドを定義します。
cacheField
要素は、フィールドのデータ型と書式設定を定義し、共有文字列のキャッシュとして使用する 2 つの目的で使用されます。 ピボット値は、ピボット キャッシュ レコード パーツに保存されます。 定期的な文字列を値として使用する場合、キャッシュ レコードは共有アイテムの cacheField
コレクションへの参照を使用します。
Pivot Cache Records クラス
ISO/IEC 29500 仕様の次の情報では、 PivotCacheRecords
(<pivotCacheRecords/>
) 要素について説明します。
pivotCacheRecords パーツには、集計の対象となる基になるデータが含まれます。 これはソース データのキャッシュです。
キャッシュ レコード パーツには、任意の数のキャッシュ レコードを保存できます。 それぞれのレコードは、キャッシュ定義内に存在するフィールドと同じ数の定義された値を持ちます。 各レコードは、 r
要素で定義されます。 こうしたレコードには、値のアイテムが子要素として含まれます。 数値型、ブール型、日時型など、特定の型が指定された値を入力することも、共有アイテムへの参照を行うこともできます。