WBC TECH BLOG

Will Be Computingのメンバーによるブログです。

*

iReportで簡単に帳票作成

   

はじめに

iReport/JasperReportsを使っての帳票作成をします。
ここでは主にiReportで作ったjrxmlファイル、またはjasperファイルにプログラムから値を動的にバインドする方法を記述します。

1.目次

  • iReportとは
  • 環境
  • おおまかな流れ
  • iReportの初期設定
  • iReportでレイアウト作成
  • DBからフィールドを参照する
  • Javaプログラムからパラメーターを参照する
  • JavaBeanからフィールドを参照する
  • 参考サイト

2.iReportとは

iReportとはSourceForget.netで開発が行われているオープンソースで帳票作成用のデザインテンプレートをグラフィカルに作成するソフトウェアです。画面上でイメージ的にレイアウトすることができ、比較的簡単にテンプレートを作成できます。

iReportで作ったテンプレートはjrxmlファイル形式で保存され、JasperReportsで目的の形式の帳票に変換します。
(iReport内でjasperファイルまでコンパイルできます。)

注:jasperreports・・・JasperReportsとはiReportで作成したテンプレートXMLからPDF、HTML、Excel等での帳票作成が可能なライブラリです

3.環境

実行環境

・iReport 2.0.1
・JasperReports 2.0.1(iReport 2.0.1内のlibに最初から入ってます。)

追加環境

JasperReportsを使うにはプログラム環境のライブラリーに以下のjarファイルを追加しなければいけません。
・jasperreports-2.0.1.jar
・itext-2.0.1.jar
・iTextAsian.jar
・commons-digester-1.8.ja
・commons-beanutils.jar
・commons-collection-3.2.jar
・commons-logging-1.1.jar

注:iTextAsian.jarはWindows側でclasspathを設定する必要があります。
設定をしていないとiReportでPDF出力した時に日本語が反映されません。

4.おおまかな流れ

  1. iReportで目的形式のテンプレートをレイアウトし、jrxmlファイルを作成。
  2. 出来上がったjrxmlファイルをiReport内で、またはプログラム内でJasperReportsを使いjasperファイルに変換。
  3. プログラム内でJasperReportsを使いjasperファイルを目的形式のファイルに変換

5.iReportの初期設定

日本語化

  1. メニューから「Options→Settings…」を選び、出てきたウィンドウから「General」タブを選択します。
  2. 「General」タブ内の「Language」項目から「Japanese (Japan)」を選択し、下部の「Apply」をクリックします
  3. iReportを再起動します。これで日本語化は完了です。

ヴュアーの設定

  1. 次にヴュアーの設定をしていきます。メニューから「オプション→設定」と選び、出てきたウィンドウから「外部プログラム」タブを選択します。
  2. ヴュアーを設定します。(今回はPDFヴュアーを設定します。実行ファイルまでのパスを入力します。)
  3. 下部の保存ボタンを押して完了です。

6.iReportでレイアウト作成

レイアウト作成

  1. メニューから「ファイル→新規ドキュメント」を選択します。
  2. 画面上部の各種アイコンから目的に応じてアイコンを選択し、画面中央のバンド部分に配置していきます。

    注:バンド・・・レポート上の表示上の分類です。

    iReport-001

  3. レイアウトが完了したらそれぞれの設定は右クリックからプロパティでできます。(フォントの設定、テキストの内容など)

注:レイアウトの細かい説明に関しては省略します。

7.DBからフィールドを参照する

データソースの設定

  1. まずiReportから参照したいデータソースの設定を行います。メニューから「データ→接続 / データソース」を選択し、ウィンドウの右側の「新規」ボタンを選択します。
    iReport-002
    iReport-003

  2. 接続プロパティの中から目的のデータソースタイプを選択します。(ここでは「データベースJDBC接続」を選択)

  3. 参照したいデータベースのテーブルと環境を合わせてJDBCの接続設定を行い、「テスト」を押して接続が確認できたら「保存」で設定を保存します。
    iReport-004

フィールドの設定

  1. フィールドはデータベースやBeanなどの外部リソースからのデータの取り込みのための形式で、”$F{フィールド名}”で定義します。
  2. メニューから「データ→レポートクエリ」を選択するとウィンドウが開きます。「レポートクエリー」タブを選択します。
  3. クエリ言語を選択し(ここでは「SQL」を選択)、参照するための命令文を記入します。
  4. 記入後、「フィールドの読み取り」ボタンをおして下側にテーブルのフィールドが読み込まれます。「OK」ボタンで設定は終了です。

iReport-005

フィールドの配置

  1. データベースのフィールドはiReport側に読み込まれていますので、あとはそれを配置していきます。
  2. アイコンの中から文字フィールドアイコンを選択し任意の場所に配置し、右クリックから「プロパティ」を選択します。
  3. 「文字フィールド」タグを選択し「テキストフィールド表現」のところに”$F{フィールド名}”と定義を行います。

    iReport-006

4.以上の設定をして実行するとDBの値が反映されます。右上の「実行(有効な接続)」をおしてみてください。作成されたPDFファイルに値が反映されているはずです。

iReport-007
iReport-016

8.Javaプログラムからパラメーターを参照する

フィールドの配置

1.アイコンの中から文字フィールドアイコンを選択し任意の場所に配置し、右クリックから「プロパティ」を選択します。
2.「文字フィールド」タグを選択し「テキストフィールド表現」のところに”$P{パラメーター名}”と定義を行います。

iReport-017

パラメーターの設定

1.パラメーターの設定をしていないので実行すると値を認識できずエラーがでてしまいます。
2.上部のアイコンから「レポートフィールド、変数およびパラメーター」を選択します。でてきたウィンドウから「パラメーター」タブを選択します。

iReport-009

iReport-010

3.ウィンドウの右側の「新規」ボタンを選択し、パラメーターの設定をします。

iReport-011

4.レイアウトと値の設定が終了したら左上の「保存」ボタンで保存します。(これでjrxmlファイルが作成されています。)
5.ここで「メニュー→ビルド→コンパイル」か、右上のコンパイルアイコンを押すとjasperファイルも作成されます。

jrxmlファイル、またはjasperファイルを移動

1.次にiReportがあるディレクトリから今作ったjrxmlファイル、またはjasperファイルをコピーし、プログラムのあるプロジェクト内のフォルダの中に貼り付けます。

プログラム

import java.sql.*;
import java.util.*;
import net.sf.jasperreports.engine.*;
public class Example1 {
 public static void main(String[] args){
  // iReportで作成したjrxmlファイルへのパス
  String jrxmlPath = "./example.jrxml";
  // 出力するPDFファイルのパス
  String PdfPath = "./example.pdf";
  Connection con = null;
  try{
   // (1)jrxmlファイルをjasperファイルへコンパイル
   JasperReport jasper = JasperCompileManager.compileReport(jrxmlPath);
   //(2)パラメータの生成
   Map paramMap = new HashMap();
   paramMap.put("TEAM_NAME", "野球チーム");
   // (3)データソースの生成
   Class.forName("com.mysql.jdbc.Driver");
   con = DriverManager.getConnection(
   "jdbc:mysql://localhost/mysql?user=root&password=root");
   // (4)データの動的バインド
   JasperPrint print = JasperFillManager.fillReport(jasper, paramMap, con);
   // (5)PDFへ出力
   JasperExportManager.exportReportToPdfFile(print, PdfPath);
  }catch (Exception ex) {
   ex.printStackTrace();
  }
  finally{
   try {
    con.close();
   }catch (SQLException e) {
    e.printStackTrace();
   }
  }
 }
}

1.プログラムでjrxmlファイルをコンパイルせずにすでにiReportで作成したjasperファイルを使う場合は31行目のjasperFillManager.fillReportの3つの引数の最初にjasperファイルのパスを指定します。

  String jasper = “./example.jasper”;
  JasperPrint print = JasperFillManager.fillReport(jasper,paramMap,con);
 

2.正しく変換ができていれば指定した出力場所にPDFファイルができています。
$P{TEAM_NAME}のところが‘野球チーム’に変わっているはずです。

iReport-019

9.JavaBeanからフィールドを参照する

ここではJavaプログラムのBeanからフィールドを定義し、インターフェイスであるListを使って値を参照しPDFファイルに出力する方法を記述します。

クラスパスの設定

1.まずはじめに参照したいクラス(Bean)があるディレクトリまでのパスを設定します。
2.メニュから「オプション→クラスパス」を選択するとウィンドウが開きます。

iReport-013

3.ウィンドウの右側の「フォルダの追加」ボタンを選択し、参照したいクラス(Bean)があるディレクトリまでのパスを設定します。サブディレクトリまで見てくれます。

iReport-014

4.設定後、「クラスパスの保存」ボタンをおして設定は終了です。

フィールドの設定

1.フィールドはデータベースやBeanなどの外部リソースからのデータの取り込みのための形式で、”$F{フィールド名}”で定義します。
2.メニューから「データ→レポート クエリ」を選択するとウィンドウが開きます。「JavaBean データソース」タブを選択します。
3.クラス名の項目に参照したいフィールドが定義されているパッケージ名からフルでクラス名(Bean名)を記入します。

iReport-015

4.記入後、「属性の読み取り」ボタンをおすと、Beanのフィールドが読み込まれます。
5.フィールドを選択して「選択したフィールドを追加」ボタンをおしてフィールドを追加していきます。
6.「OK」ボタンで設定は終了です。

フィールドの配置

1.フィールドを配置していきます。”$F{フィールド名}”で定義します。
2.レイアウトと値の設定が終了したら左上の「保存」ボタンで保存します。(これでjrxmlファイルが作成されています。)
3.「メニュー→ビルド→コンパイル」か、右上のコンパイルアイコンを押してjasperファイルを作成します。

jasperファイルを移動

1.次にiReportがあるディレクトリから今作ったjasperファイルをコピーし、プログラムのあるプロジェクト内のフォルダの中に貼り付けます。

プログラムの例

List teams;
//iReportで作ったjasperファイルのパス
String jasperPath = "./example.jasper";
//出力するPDFファイルのパス
String PdfPath = "./example.pdf";
try{
  //リストからデータソースを作成
  JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(teams);
  //jasperファイルにデータを動的にバインド
  JasperPrint print = JasperFillManager.fillReport(jasperPath, null, ds);
  //jasperファイルからPDFファイルを作成
  JasperExportManager.exportReportToPdfFile(print, destPath);
}catch(Exception ex){
  ex.printStackTrace();
}

1.1行目・・・List teamsには既にデータが入っているものとします。(リストの作り方はここでは説明しません。)
2.3,5行目・・・jasperファイルへのパスと完成したPDFファイルの出力先のパスを指定します。
3.8行目・・・ListをつかってJRBeanCollectionDataSource型のデータソースを作ります。
4.10、12行目・・・Nullのところには同じようにパラメーターを渡すこともできます。

 - iReport

広告

広告

Message

  関連記事

関連記事はありませんでした