帳票テンプレート 繰り返し項目を作成する

0
2074
views

今回は帳票テンプレートの繰り返し項目を作成していきます。想定としては、データベースから取り出した複数行のデータを帳票上に表示していくためのテンプレート設定をします。

作成の要点

Static Text と Text Filed を使い分ける

エレメントには Static TextText 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 を出力させます。