Java/帳票/JasperReports5.0 グループ分けと集計

CSVファイル

  • 前回使ったCSVファイルに、グループ分け用の店名(shopname)カラムと、集計用の年齢(age)カラムを追加します。
"id","firstname","lastname","city","street","shopname","age"
"1","ローラ","スチール","北海道","稚内市なんとかかんとか","ゲオ西本店","19"
"2","スーザン","キング","青森県","八戸市なんとかかんとか","ゲオ西本店","24"
"3","アンネ","ミラー","岩手県","盛岡市なんとかかんとか","ゲオ西本店","33"
"4","従業員","4","岩手県","盛岡市なんとかかんとか","シス支店","41"
"5","従業員","5","岩手県","盛岡市なんとかかんとか","シス支店","19"
"6","従業員","6","岩手県","盛岡市なんとかかんとか","シス支店","88"
 

テンプレート修正

グループの追加

  • 前回使った、テンプレートにグループを追加します。
  • Report Inspecterの一番上の要素を右クリック→Add Rport Groupを選択します。
  • Group nameに任意のグループ名を、Group by the following report object.にグループ分けに使うフィールドをしていし次へを押します。
    • この画面を出す前にフィールドは追加しておいて下さい。
  • そのまま完了を押します。
  • グループが追加されました。

集計用変数の追加

  • Variablesの上で右クリック→追加を選択
  • 追加された変数のプロパティを上記のように編集。
  • 項目の説明
    • Name : 変数の名前
    • Variable Class : 変数のクラス
    • Calculation : 計算する方法、今回は平均を求めるためAverageにしました
    • Reset type : 変数をリセットするタイミング、今回はグループ毎の平均年令を求めるためGroupです
    • Increment type : 謎です、今回は使いません
    • Increment group : 同上
    • Incrementer Factory Class : 同上
    • Variable Expression : 集計する値を指定します。今回は年齢(age)フィールドです。
    • Initial Value Expression : 初期化する値のようです。
  • 合計とか平均求めるだけなら、ここのプロパティをいじるだけで作れるようです。

テキストフィールドの設定

  • Pattern の横の…をクリックすると、書式設定ダイアログが出てくるので簡単に書式を設定出来ます。
    • 今回は小数点2桁までの表示にしました。

出来上がったテンプレート


サンプルプログラム JasperSample5.java

  • プログラム側は特に変更点ないので省略です。

実行結果

  • 店名グループ毎に、店名と平均年令が表示されました。

サンプルダウンロード

  • テンプレート、CSVファイル、javaソース、判子画像、出力結果PDFの詰め合わせです。

コメント

名前: