
今回は帳票テンプレートの繰り返し項目を作成していきます。想定としては、データベースから取り出した複数行のデータを帳票上に表示していくためのテンプレート設定をします。
作成の要点
Static Text と Text Filed を使い分ける
エレメントには Static Text と Text Filed があることを理解し、その役割によって使い分ける必要があります。
- 帳票の出力ごとに表示内容を変える必要がない項目(固定文字列)には、エレメントに Static Text を利用する
- 条件によって変数への代入によって表示内容を変更したい項目(動的文字列)には、エレメントに Text Filed を利用する
Parameter と Filed を使い分ける
Text Field にバインドできる変数には、2つの種類があります。1つは Parameter で、もう1つは Field です。繰り返し項目には Field を使い、Java 側ではこの Filed に List オブジェクトをバインドすることで、PDF に任意の項目を表示させます。
では、テンプレートの繰り返し項目部分を実際に作っていきましょう。
Column Header の作成
まずは帳票出力時に流し込まれるデータのヘッダー項目となる部分を作っていきます。テーブルでいう [カラム名] にあたる部分ですね。ここは固定文字列になる箇所なので Static Text で作成します。
右上部 [Palette] ウィンドウの [Basic Elements] から [Static Text] をドラッグして、そのまま中央のメインエディタ画面にドロップします。
各アイテムに合わせた Static Text の配置・調整をして Column Header 部分をまとめます。
Detail エリア内容の作成
次に Detail バンドの内容を作成していきます。[Outline] ウィンドウの [Fields] を右クリックし、メニューから [Create Field] を選択します。表示に必要な変数を揃えていきます。
この例で揃えていくのは次の6項目です。
項目名 | 変数名 | 型 |
---|---|---|
品名 | fishName | String |
産地 | locality | String |
単価 | unitPrice | Integer |
数量 | quantity | Integer |
金額 | totalAmount | Integer |
備考 | remarks | String |
必要な Field を揃えたら Detail バンドのエリアに、作成した Field をまとめてドラッグ・アンド・ドロップします。
Detail バンドにドロップされた Prameter に紐づいた Text Filed がそれぞれに生成されます。あとは見栄えを調整します。
見栄えの調整が分からない場合は、下記ページを参考にしてください。
Summary の作成
最後に Summary バンドを作ります。
計算式をバインドする
小計額を表す Parameter を sumTotal を用意します。消費税額と総計額は、変数 sumTotal を利用して、計算式でバインドするようにします。各 Text Field へのバインド値は次の通りです。今回のように消費税額の計算ロジックを JasperReports のテンプレート側に持たせるのか、または Java のプログラム内に持たせるのかは、要件に合わせて考えます。
内容 | バインド値 | 型 |
---|---|---|
小計額 | sumTotal | Integer |
消費税額 | sumTotal * 0.08 | Integer |
総計額 | sumTotal * 1.08 | Integer |
表示書式を設定する
バインドしたパラメータの表示書式(フォーマットパターン)を設定します。
対象の Text Field を選択した状態で [Properties] ウィンドウから [Text Field] タブを開き、[Pattern] 入力フォームの末尾にある […] ボタンを押します。
すると [Pattern] ウィンドウが開きます。今回は対象の表示内容が金額なので、左部メニューから [currency] を選択します。ここでのおもな設定項目は次の通りです。
- Leading Zeros: 先頭ゼロ埋めする桁数
- Decimal Places: 小数点以下を何桁表示させるか
- Use 1000 separator: ここにチェックを入れると3桁ごとのカンマ区切り表示になる
帳票テンプレートの完成
最終的に全体の見栄えを整えたら、出力時の帳票がどんな感じになるかをプレビューします。CSV データを使ったお手軽なプレビュー方法は他の記事を参考にしてください。
突っ込みどころがなければ、一旦これで帳票テンプレートは完成です。このテンプレートを使って、Java プログラムで値をバインドさせ、PDF を出力させます。