帳票テンプレートは、複数のテンプレートフィールドで構成されますが、データを連結しセルを展開する際にお互いに依存し合います。
例えば、以下の画像では、「team」と「name」の2つのデータフィールドが帳票テンプレートに定義されており、順番としては「team」が前、「name」が後になります。この場合、「name」は「team」に依存し、データ連結の際に「team」に基づいて値がグループ化およびフィルタリングされます。また、「name」の展開方向も「team」によって決定されます。つまり、「team」のテンプレートセルは「name」のコンテキストセルということになります。
帳票テンプレートにてテンプレートフィールドが複数定義されている場合、それらの間に「コンテキスト」関係と呼ばれる関係が確立されます。前にあるテンプレートセルは、後のテンプレートセルのコンテキストセルとなります。この関係に基づいて、データを連結しセルを展開する際に、データをグループ化およびフィルタリングします。
コンテキスト関係には2種類あります。
セルのコンテキストは Context(省略形:C)プロパティで設定します。テンプレートセルに連結されるデータは、そのコンテキストに応じて縦方向や横方向に展開されます。セルのコンテキストは、以下のとおりに設定できます。
例えば、以下の画像では、セル「A1」がセル「B1」のコンテキストセルであり、縦方向に展開されます。
また、以下の例では、セル「A1」がセル「A2」のコンテキストセルであり、横方向に展開されます。
テンプレートセルに適用されるコンテキストの優先順位は、以下のとおりに決定されます。
明示的なコンテキスト > デフォルトコンテキスト > フォールバックコンテキスト
フォールバックコンテキストは、デフォルトの場合や明示的なコンテキストが定義されていない場合、テンプレートセルに Range プロパティを定義することで設定できます。Range プロパティを定義したテンプレートセルは、他のセルが展開するためのコンテキストとして使用されます。
例えば、以下の帳票テンプレートは、商品名ごとの売上明細を出力するために作成されており、商品名ごとにデータを展開する必要があります。すべてのテンプレートフィールドにコンテキストを追加するかわりに、商品名「Name」に {{ds.Name(R=B11:F16)}} のように Range プロパティを定義して、売上明細を商品名ごとに展開しグループ化するよう設定できます。
上記の帳票テンプレートから、以下のような Excel 帳票を生成できます。