Excelテンプレートの理解
RTFテンプレートの設計と同様に、Excelテンプレートの設計では、XMLデータからのフィールドをExcelワークシート内の位置にマップするというパラダイムに従います。
Excelテンプレートでは、Publisherの特殊構文とともにExcelの機能を使用して、このマッピングを実行します。データ要素の直接マッピングに加えて、Excelテンプレートでは、より複雑な書式設定命令をサポートするために、セル範囲およびコマンドを、そのコマンドを含むように指定された別のワークシートで定義します。このシートは、XDO_METADATAシートと呼ばれます。
データ・フィールドおよびデータ・グループのマップ
Excelテンプレートでは、名前付きセルおよびセルのグループを使用して、Publisherによるデータ要素の挿入を可能にします。
セルにはPublisher構文を使用して名前が付けられ、XMLデータへのマッピングが設定されます。セル名はテンプレート内で、名前付きセルと、XDO_METADATAシートで定義されている計算および書式設定命令との間のマッピングを設定するためにも使用されます。
テンプレートの内容とレイアウトは、レポートへの入力として使用されるXMLデータ・ファイルの内容と階層に対応している必要があります。テンプレート内の繰返し要素の各グループは、XMLファイル内の親子関係に対応している必要があります。データがExcel内の適切なレイアウトに対応するように構造化されていない場合は、XSLTの前処理またはグループ化関数を使用して、データを再グループ化できます。ただし、複雑さを最小限に抑えて最高のパフォーマンスを得るには、レポート・レイアウトを念頭に置いてデータ・モデルを設計することをお薦めします。
マッピング用のExcel定義名の使用
Publisherでは、Excel定義名機能を使用して、データ・フィールドおよび繰返し要素を識別します。
Excelの定義名は、セル、セルの範囲、式または定数を表す名前です。
Template Builder for Excelを使用してフィールドおよび繰返しグループを挿入すると、定義名が自動作成されます。また、定義名を手動で挿入することもできます。Excelテンプレート内で使用する定義名は、この章で説明する構文を使用すると同時に、Microsoft Excelのヘルプ・ドキュメントに記載されているMicrosoft社のガイドラインに従う必要があります。Publisherの定義名は、テンプレート・シートに従っています。
手動でExcelテンプレートを作成する(つまり、Publisher Desktop Excel Template Builderを使用しない)場合、「XDO_?」とマークアップされたすべてのセルに、デフォルト値を用意する必要があります。デフォルト値は、レポート・データXMLファイルのデータ型に適合している必要があります。XDO_?セルのデフォルト値がない場合、それらのテンプレート・セルから生成された出力セルの形式が失われ、想定外の結果が生じることがあります。Publisher Desktopを使用してExcelテンプレートを作成する場合、デフォルト値は、レポート・データ・ファイルのサンプル・データの最初の行を使用して自動的に入力されます。
接頭辞XDO_を使用した定義名の作成
Publisher定義名は、接頭辞XDO_で識別されるExcel定義名です。
テンプレートでPublisherコードを使用して定義名を作成することにより、テンプレート内のコードの位置とXMLデータ要素との間にリンクが作成される他、出力レポート内でデータ範囲の動的な拡張機能が維持され、そのデータ範囲を他の式計算、チャートおよびマクロで参照することもできます。
XDO_定義名を使用したネイティブExcel関数の使用
定義名が単純な表で使用されているかぎり、XDO_定義名をExcel固有の式で使用できます。
レポートの生成時には、式が正しく計算されるように、Publisherによって名前付きリージョンのリージョン範囲が自動的に調整されます。
ただし、テンプレート内にネストしたグループを作成すると、最終的なレポートでグループ内に生成されるセルは、正しい名前と適切に関連付けることができません。この場合、Excel固有の関数でのXDO_定義名の使用はサポートされません。
XDO_METADATAシートについて
各Excelテンプレートには、テンプレート・ブック内にXDO_METADATAという名前のシートが必要です。
Publisherでは、このシートをテンプレート内で次のように使用します。
-
テンプレートをExcelテンプレートとして識別します。
-
Template Builderを使用して作成するフィールドおよびグループ・マッピングのコードを挿入します。
テンプレート設計者として、テンプレート内のフィールドまたはグループでより高度な計算および命令の処理を実行するように指定する場合もこのシートを使用します。Publisherには、特別なレポート機能を提供するための関数セットが用意されています。その他の書式設定および計算は、XSLTで記述できます。
XDO_METADATAシートの作成
Template Builderを使用して新しいExcelテンプレートの設計を開始する場合、「挿入」機能のいずれかを初めて使用するときは、Template Builderによって非表示のXDO_METADATAシートが自動作成されます。シートが作成されたことを示すメッセージが表示されます。
Publisherでは、このシートは非表示のシートとして作成されます。XDO_METADATAシートの表示および編集を行うには、Excelの「再表示」
コマンドを使用します。
XDO_METADATAシートの書式
XDO_METADATAシートは、次の図に示す書式を使用して作成されます。この書式は、ヘッダー・セクションとデータ制約セクションという2つのセクションから構成されます。どちらのセクションも必須です。
ヘッダー・セクションでは、列Aのすべてのエントリをリストする必要がありますが、値が必要なのは、図に示したように、Template Typeの1つだけです。列Aのエントリを次に示します。
-
Version
-
ARU-dbdrv
-
Extractor Version
-
Template Code
-
Template Type
-
Preprocess XSLT File
-
Last Modified Date
-
Last Modified By
データ・フィールド・マッピングおよび他の処理命令を指定するには、データ制約セクションを使用します。詳細は、次の項を参照してください。
Excelテンプレートのスケーラビリティの有効化
Excelテンプレートのスケーラビリティを有効にし、大規模データを処理してExcel形式でレポートを出力します。
大量のデータとともにレポートをExcelスプレッドシートとして公開しようとすると、Excelシートの制限が65536行であるため、メモリーの問題が発生する場合があります。Excelテンプレートでスケール変更できるようにすると、そのテンプレートでは大量のデータが複数のシートに分割されるため、メモリーの問題を回避できます。Excelテンプレートのスケーラビリティは、システム・レベル、レポート・レベルまたはExcelテンプレート・レベルで有効にできます。テンプレート・レベルの設定はレポート・レベルの設定をオーバーライドし、レポート・レベルの設定はシステム・レベルの設定をオーバーライドします。下位互換性を確保するため、Excelテンプレートのスケーラビリティはデフォルトではfalseに設定されています。
スケール変更できるExcelテンプレートでは、次のようにしてメモリーの問題が回避されます。
- データ・サイズが1つの表で65536行を超える場合、データを複数のシートに入力します。
- ExcelレポートをレンダリングするためにN行が処理されたら、そのN行ごとにメモリーをフラッシュします。
デフォルトでは、フラッシュ・セル・サイズ = 3000 * 100 (行数*列)です。N = 3000 * 100 / Excelテンプレート・シートの実際の列数
このフラッシュ・セル・サイズをオーバーライドするには、ExcelテンプレートのXDO_METADATAシートで、"Data Constraints:"行の下にフラッシュ・セル・サイズ(XDO_FLUSH_CELLSIZE_? flush_cell_size)を指定します。XDO_GROUP表の最終レポート・サイズがフラッシュ・セル・サイズより大きい場合、XDO_GROUP表が正常に機能しないことがあります。
- シート内のデータを処理した後、各シートに使用されたメモリーを解放します。
テンプレート・レベルでのExcelテンプレートのスケーラビリティの有効化
Excelテンプレートのスケーラビリティを有効にすると、大量のデータをExcelスプレッドシートに公開する際にメモリー不足を回避できます。
- Excelテンプレートを開きます。
- ExcelテンプレートのXDO_METADATAシートを選択します。
- "Data Constraints:"行の下の列Aに
XDO_SCALABLE_?
と入力し、列Bにtrue
と入力します。