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