このトピックでは、用紙サイズによる自動改ページとレコード数による自動改ページという2つの方法に対応するための、様々なテンプレートプロパティと関数について説明します。それぞれの方法で必要とされるプロパティと関数の概要は以下のとおりです。なお、これらはすべて、「グローバル設定」の「TemplateOptions.PaginationMode」が「true」に設定されている場合にのみ動作します。
用紙サイズによる自動改ページ | レコード数による自動改ページ |
---|---|
自動改ページのプロパティ | 自動改ページのプロパティ |
RepeatOutput | CountPerPage |
KeepTogether | RepeatType |
AttachTo | NoRepeatAction |
RepeatWithGroup | RepeatWithGroup |
自動改ページの関数 | |
PageNumber | |
PageCount |
上記プロパティおよび関数の実際の動作については、デモ「自動改ページ」からご確認いただけます。
用紙サイズによる自動改ページでは、出力するコンテンツが帳票テンプレートにて指定した用紙サイズを超えると、新しいページをワークシートとして生成します。ただ、このままだと、明細のヘッダーとフッターは各ページで繰り返されず、Excel 帳票の最初と最後に一度だけ出力されることになります。また、場合によっては、1ページに明細のフッターだけが単独で出力される可能性があります。同様に、データを含む結合セルがページをまたぐ場合、セルのデータは最初のページに一度だけ出力されることになります。このようなシナリオに対応するため、テンプレート構文には以下のプロパティがあります。
RepeatOutput プロパティは、結合セルの値を最初のページにのみ出力するか、各ページに出力するかを指定します。
設定値:Boolean
例:{{ds.Client(RepeatOutput=true)}}
以下の画像では、RepeatOutput プロパティを使用して、テンプレートセルがページをまたいだ結合セルとして展開された場合、各ページで値を出力するように設定しています。
KeepTogether プロパティは、Range(省略形:R)プロパティで指定したセル範囲をできるだけ同じページに出力するかどうかを指定します。また、横方向と縦方向のどちらの改ページで設定を適用するかも選択できます。
設定値:列挙型
例:{{ds.Company(R=B4:D8, KeepTogether=Vertical)}}
以下の画像では、KeepTogether プロパティを使用して、垂直方向に改ページする際に、各会社の明細(Range プロパティで指定したセル範囲「B4:D8」)をできるだけ同じページに出力するように設定しています。
AttachTo プロパティを使用して、テンプレートセルを他のテンプレートセルに紐付け、改ページする際に特定のセルを単独で出力しないように設定できます。このプロパティには、特定のセルと常に一緒に出力したいテンプレートセルの参照を指定します。
設定値:セル参照
例:小計{{(AttachTo=B6)}}
以下の画像では、AttachTo プロパティを使用して、小計のテンプレートセルを明細のテンプレートセルに紐付け、小計を単独ではなく常に明細と一緒に出力するように設定しています。
用紙サイズによる自動改ページの場合、RepeatWithGroup プロパティは、繰り返し出力するテンプレートセルの参照を指定します。これにより、例えば、すべてのページにて明細のヘッダーを明細に合わせて繰り返し出力するように設定できます。
設定値:セル参照
例:取引先{{(RepeatWithGroup=B6)}}
以下の画像では、RepeatWithGroup プロパティを使用して、すべてのページにて明細のヘッダーとフッターを明細に合わせて繰り返し出力するように設定しています。
1ページあたりのレコード数による自動改ページでは、出力したレコードが帳票テンプレートにて指定した数を超えると、新しいページをワークシートとして生成します。この場合、新しいページはすべて帳票テンプレートで指定されたものと同じレイアウトになります。
CountPerPage(省略形:CP)プロパティを使用して、テンプレートセルを展開する際に1ページに出力するレコード数の最大値を指定し、それに基づき自動改ページを行うことができます。なお、CountPerPage プロパティの値に「*」が設定されている場合、上記の用紙サイズによる自動改ページとなるため、1ページあたりのレコード数の制限は行いません。
このプロパティは、Excel 帳票に出力したレコード数がプロパティの値を超えた場合、ヘッダーとフッターを含む同じ帳票テンプレートのレイアウトを使用して新しいページをワークシートとして自動的に作成します。レコード数を数える際、Group プロパティに List が設定されている場合は、データソースのデータのとおりにレコード数を数えます。Group プロパティに Normal、Merge、Repeat が設定されている場合は、グループ化されたデータを元にレコード数を数えます。
設定値:整数 または「*」
例:{{ds.Product(FM=O, G=L, CP=10)}}
以下の画像では、CountPerPage プロパティを使用して、10レコードごとに改ページを行うように設定しています。
メモ:
RepeatType プロパティは、RepeatWithGroup プロパティにてグループが指定されている場合に、Range(省略形:R)プロパティで指定したセル範囲を繰り返す方法を設定します。
設定値:列挙型
例:{{(R=A6:L15, RepeatType = FirstPage, RepeatWithGroup =A3)}}
NoRepeatAction プロパティは、Range(省略形:R)プロパティで指定したセル範囲がページに出力されない場合の削除方法を指定します。
設定値:列挙型
例:{{(R=A6:L15, RepeatType = FirstPage, RepeatWithGroup =A3, NoRepeatAction=DeleteRows)}}
レコード数による自動改ページの場合、RepeatWithGroup プロパティは、Range(省略形:R)プロパティで指定したセル範囲を繰り返す際のグループの親となるテンプレートセルの参照を指定します。
設定値:セル参照
例:{{(R=A6:L15, RepeatWithGroup =A3)}}
メモ:
以下の画像では、RepeatWithGroup プロパティとともに、RepeatType プロパティと NoRepeatAction プロパティを使用して、各グループの最初のページにグループヘッダー、最後のページにグループフッターを出力するように設定しています。
PageNumber 関数は、引数で指定したグループごとの現在のページ番号を出力するために使用します。
構文:PageNumber(string cell = null)
例:{{=PageNumber(A3)}}
なお、関数の引数が指定されない場合、結果はワークブックでの現在のシートのインデックスになります。
PageCount 関数は、引数で指定したグループごとの総ページ数を出力するために使用します。
構文:PageCount (string cell = null)
例:{{=PageCount(A3)}}
なお、関数の引数が指定されない場合、結果はワークブックの総シート数になります。
以下の画像では、PageNumber 関数と PageCount 関数を使用して、グループごとのページ番号と総ページ数を出力するように設定しています。
制限事項
PageNumber 関数および PageCount 関数は、Count や Sum などの他の関数と組み合わせて使用することはできません。