#4.form.iReport 03.10.7 11:15 AM ページ1 5 2

1

第章

iReport で
簡単帳票作成PDF/Excel/HTML対応のGUI帳票エディタ兼実行環境㈱ビーブレイクシステムズ http://www.bbreak.co.jp/
横井 朗 YOKOI Akira yokoi@bbreak.co.jp ／鹿取 裕樹 KATORI Hiroki katori@bbreak.co.jp

介します．

はじめに

本稿では，iReport のウィザード機能を使用して帳票作成の流れを確認した後，サンプル請求書を作成しながらiReport の使用方法を解説していきます．

業務システム構築の際に，請求書やレポートなどの帳票出力を求められる機会は多いと思います．

iReport とはPDFならApache XMLプロジェクトのFOP，Word・ExcelならJakarta POIと，出力フォーマットに応じて個々のライブラリを習得し，それぞれに合わせて定義

iReport は，JasperReports 注1 のデザイン・実行環境

ファイルの作成やコーディングをするのはなかなかので，SourceForge.net で開発が行われているオープン手間です．そこで今回は，同一定義ファイルからPDF，ソースのツールです注2．図1 に示すように，iReport でHTML，Excel などでの帳票作成が可能なオープンソ

テンプレートXML を作成し，iReport 上から実行するースのGUI エディタ兼，実行環境であるiReport を紹ことで，JasperReports にテンプレートXML が読み込

●図 1 iReport による帳票出力のしくみ

iReport
デザイン

実行

JasperReports
テンプレートXML(帳票のデザインテンプレート)
プリンタ，PDF，HTML，Excel他
データの動的バインド

データベース，JavaBeansなどのデータベース

注 1）JasperReports は，Java で記述された XML ファイルの定義ファイルから帳票を作成するオープンソースのライブラリです．
JasperReports の詳細は JasperReports 開発ページ（http://jasperreports.sourceforge.net/）を参照してください．また，本誌 Vol.15
連載記事「Java オープンソース探索」でも紹介されています．
注 2）ライセンスは GNU General Public License（GPL）を採用しています．

152● WEB +DB PRESS Vol.17

#4.form.iReport 03.10.7 11:15 AM ページ1 5 3

iReport で簡単帳票作成
PDF/Excel/HTML 対応のGUI 帳票エディタ兼実行環境
まれ，帳票が出力されます．また，JasperReports おiReport ：バージョン0.2.2

よび作成したテンプレートXML を取り込めば，任意

JasperReports ：バージョン0.5.0のアプリケーションから簡単に帳票機能を利用できまJDK ：Java 2 SDK 1.4.1

す（本稿後半部でWeb アプリケーションへの組み込

Ant ：バージョン1.5.4

み方法を紹介しています）．

PDF ビューア：Acrobat Reader 6.0

バージョンについて

1

商用製品との比較

現在，iReportにはJavaバージョン（iReport-0.2系）

iReport は，商用製品と比較すると多少使い勝手はとWindows バージョン（iReport-0.1 系）が存在しま

落ちますが，ご使用いただくと，要件次第では十分にす．Windows バージョンのほうが安定しており，操利用できることが確認いただけるのではないかと思い作性も良いですが，Javaバージョンでのみ使用可能なます．実際，筆者の担当したプロジェクトでもiReport機能も存在します．また，今後はJavaバージョンのみを採用し，特に問題なく使用できています．また，現バージョンアップされる予定のため，これから使用をバージョンではいくつか不具合も見られるため，一部開始するのであればJavaバージョンをお薦めします．

機能については直接デザインテンプレート（以降，テなお，本稿ではiReport 0.2.2（執筆時の最新バージンプレートXML）を編集する必要がありますが，そョン）を使用して説明します．バージョンアップその第こは今後のバージョンアップに期待しましょう．

他の詳細情報はiReport 開発ページ（http://ireport.
sourceforge.net/）を参照してください．

基本操作

なお，本稿は以下の環境で執筆しました．
OS ：Windows 2000 Professional

それではまず，iReport の画面および基本的な操作方法について説明します（図2）．iReport のメインウ●図 2 iReport のメインウィンドウqw

ertyWEB +DB PRESS Vol.17 ●153章

#4.form.iReport 03.10.7 11:15 AM ページ1 5 4○ iReport ○ Jakarta POI ○ JFreeChart＃4

PDF，Excelデータ，グラフ出力アプリの開発▼表 1 アイコン一覧
アイコン

アイコン名称

機能概要

保存アイコン

編集中のテンプレート XML を保存します．

コンポーネント選択アイコン

編集エリアに配置されたコンポーネントを選択します．

線分アイコン

編集エリアに線分を配置します．

四角形アイコン編集エリアに四角形を配置します．

四角形アイコン（角丸）編集エリアに角が丸くなった四角形を配置します．

円形アイコン

編集エリアに円を配置します．

イメージアイコン

編集エリアにイメージデータを配置します．

テキストアイコン

編集エリアに静的テキストを配置します．

フィールドアイコン

編集エリアにフィールドを配置します．

フィールド設定アイコン

フィールド（後述）設定ウィンドウを開きます．

データソース設定アイコン

データソース設定ウィンドウを開きます．

コンパイルアイコン

テンプレート XML をコンパイルします．

実行アイコン（空データソース使用）空のデータソースを使用して帳票出力を実行します．
実行アイコン

データソースを使用して帳票出力を実行します．

▼表 2 バンド一覧
バンド概要

background

背景描画領域

title

タイトル描画領域

pageHeader

ページヘッダ表示領域

columnHeader

カラムヘッダ（detail 上部）表示領域

detail

詳細表示領域（繰り返し部）

columnFooter

カラムフッタ（detail 下部）表示領域

pageFooter

ページフッタ表示領域

summary

サマリ表示領域ィンドウは，以下のような構成になっています．

qメニュー：iReport の各種操作，設定を行います．
w各種アイコン：帳票デザインや実行時に使用するア
イコンです．代表的なアイコンについては表1 を参照してください．これ以降の説明では，表1 のアイコン名称を使用して説明します．
eプロジェクトブラウザ：現在開いているファイルの一覧が表示されます．また，タグを切り替えることでドキュメント構造が参照できます．
rデザイン編集エリア：帳票のデザインを行うエリアです．
tバンド：レポート上の表示形式ごとの分類です．詳
細は表2 を参照してください．
y出力ウィンドウ：コンパイル，実行時などiReportのメッセージを表示するエリアです．

インストールiReport および前提環境となるJDK（J2SDK），Antのインストールは，以下のように行います．
qiReport開発ページからiReport-0.2.2.zipをダウンロードし，任意のディレクトリに解凍します．これ以降，iReportの解凍先を[IREPORT̲HOME]と呼びます．
wJDK，Ant 注3 をインストールし，環境変数（PATH）を設定します．Antは，iReport，HSQLDB（後述）の起動時に使用します．
e% I R E P O R T ̲ H O M E % ¥ i R e p o r t . b a t を開 き，
IREPORT̲HOME，JAVA̲HOME（JDK のインストールディレクトリ），ANT̲HOME（Ant のインストールディレクトリ）を環境に合わせて設定します．
r%IREPORT̲HOME%¥iReport.bat を実行しiReportを起動します．

事前準備
まず，本稿でのサンプルを実行する際に必要となる環境を設定します．

注 3）Apache Ant ： http://ant.apache.org/index2.html Ant は Web サイトから最新版（apache-ant-1.5.4-bin.zip）をダウンロードし，任意のディレクトリに解凍します．

154● WEB +DB PRESS Vol.17

#4.form.iReport 03.10.7 11:15 AM ページ1 5 5

iReport で簡単帳票作成
PDF/Excel/HTML 対応の
GUI 帳票エディタ兼実行環境●図 3 追加するデータの記述

第1

CREATE TABLE IREPORT(ITEMNO INTEGER PRIMARY KEY,ITEMNAME VARCHAR,PRICE INTEGER,COUNT INTEGER)
INSERT INTO IREPORT VALUES(1,'Software Design 2003年9月号',970,10)
INSERT INTO IREPORT VALUES(2,'WEB+DB PRESS Vol.16',1580,15)
INSERT INTO IREPORT VALUES(3,'Eclipse パーフェクトマニュアル',1680,5)
INSERT INTO IREPORT VALUES(4,'JAVA PRESS Vol.31',1480,10)●図 4 JDBC 接続の設定●図 5

ビューアの設定●データベースの設定
本稿では，JasperReports にサンプルとして含まれているHSQLDB を使用します編注．
qJasperReports の開発ページ（http://jasperreports.
sourceforge.net/）からJasperReportsの最新版（本稿ではjasperreports-0.5.0-project.zip）をダウンロードし，任意のディレクトリに解凍します．これ以降，JasperReportsの解凍先を[JR̲HOME]と呼びます．
w%JR̲HOME%¥demo¥hsqldb¥test.scriptの最下行に本稿で使用するデータとして図3 の記述を追加します．
e以下のコマンドを実行し，HSQLDBを起動します．
> cd %JR_HOME%¥demo¥hsqldb> ant

r%JR̲HOME%¥lib¥hsqldb-1.61.jar を%IREPORT̲HOME%¥lib¥ にコピーし，HSQLDB のJDBC ドライバを利用できるようにします注4．

● iReport のデータベース接続設定

w[Connections / Datasources]ダイアログで[New]を選択し，JDBC接続に必要な設定を入力します（図4）．HSQLDB の設定を変更していなければ，ユー
ザ名="sa"，パスワード不要で接続できます．
e[Test]を押して接続が確認できたら，[Save]を押して[Connections properties]を抜けます．
riReport の メ ニ ュ ー か ら [Build]-[Set activeconnection]を選択し，作成したデータベース接続設定を有効にし，[OK]を押します．

● PDF ビューアの設定
帳票出力の際に使用するビューアを設定します．
qiReportのメニューから[Tools]-[Options...]を選択します．
w[External programs]タグを開き，使用するビューアへの実行パスを設定します．本稿では，ビューアとしてAcrobat Readerを使用します（図5）．

データソースとしてDBMS を使用する場合は，以下のような設定が必要です．

ウィザード機能による帳票の作成

qiReportのメニューから[Datasource]-[Connections /それでは，iReport のウィザード機能を使用して帳Datasources]を選択します．

票作成の流れを確認しましょう．

編注）HSQLDB については，139 ページ「はじめての HSQLDB」にも記載があります．
注 4）すでに iReport を起動していた場合は，コピー後に iReport の再起動が必要になります．

WEB +DB PRESS Vol.17 ●155章

#4.form.iReport 03.10.7 11:15 AM ページ1 5 6○ iReport ○ Jakarta POI ○ JFreeChart

PDF，Excelデータ，グラフ出力アプリの開発＃4●図 6 Query●図 7 Fields selection●図 8 Group by...

●図 9

LayoutqiReportのメニューから[File]-[Report wizard...]を選択し，[iReport Wizard]ダイアログを開きます．
wStep1（図 6）[Query string]にselect * fromIREPORT と入力し，[Next >]を押します．
eStep2（図7） ITEMNAME ， COUNT ， PRICEをそれぞれ選択し，[>]を押してフィールドを登録

ウィザード機能で帳票作成の流れを確認できたら，次にサンプル請求書（図10）の作成に移ります．
なお，本稿で使用したテンプレートXML ファイル
は本誌Webサイト（http://www.gihyo.co.jp/wdpress/）

します．
rStep3（図8）[Group 1]で ITEMNAME を選択し，[Next >]を押します．
tStep4（図9）レイアウトで[Columnar]-[grayC]を選択し，[Next >]を押します．他のレイアウトを選択した場合は動作させるためにデザインの修正が必要になる場合があります．
yStep5 [Finish]を押すと，iReport上に作成された帳票が表示されます．
u保存アイコン（請求書を作ってみる）を選択し，任意のディレクトリにテンプレートXMLを保存します．

にて公開していますので，そちらも参考にしてください．

帳票のデザイン
それでは，帳票のデザインを開始します．
iReportのメニューから[File]-[New document]を選択します．
[Report name]に任意の名称を入力し（図 11），[OK]を押すとデザイン編集エリアが表示されます．
図12 に，本稿でのデザイン編集エリアの完成イメ

i実行アイコンを選択すると，作成したテンプレートージを示します．なお，図12中のフィールドwe，変XMLがコンパイルされ，帳票が出力されます．

数rは依存関係があるため，一部のフィールド，変数

156● WEB +DB PRESS Vol.17

#4.form.iReport 03.10.7 11:15 AM ページ1 5 7

iReport で簡単帳票作成
PDF/Excel/HTML 対応のGUI 帳票エディタ兼実行環境のみを定義した状態ではコンパイルエ●図 10 サンプルとして作成する請求書

第1

ラーとなります．

●静的文字列の配置
テキストアイコンを選択し，静的文字列を配置します（図12-q）．
配置したコンポーネントをダブルクリックするとプロパティダイアログが表示されます．[Static Text]タグ（図13）に文字列を入力します．次のス
テップに進む前に実行アイコンを押して，帳票が出力されることを確認してください注5．
各コンポーネント共通の注意事項ですが，コンポーネントがバンドからはみだすと枠線が赤色で表示され，コンパイル時にエラーとなりますので，バンドに納まるように配置します．バンドを変更したい場合は，プロパティダイアログの[Common]タグ中の[Band]を変更しま●図 12 デザイン編集エリアの完成イメージす．

●フィールドの配置
q

フィールドとは，データベースなどから取得しyたデータを表示するためのデータ形式で， $F{フ
●図 11 Report properties

wtert

q静的文字列wフィールドeフィールド（計算式）

r変数（計算式）
t図形（線分，四角）
y画像

注 5）現バージョンのフォント設定では，外部フォントを GUI 上から指定できないため，日本語を使用する際にはテンプレート XML ファ
イルを直接編集する必要があります．<font> タグの pdfFontName に，使用するフォントへのパスを定義してください．本稿では以下の例のように指定し，MS ゴシックを使用します（フォント設定はコンポーネントのコピー＆ペーストで引き継げるので，コピー＆ペーストすれば XML ファイルを直接編集する必要はありません）．後述するフィールドや変数などで日本語を表示する際にも，同様の変更が必要となります．
例）本稿でのフォント指定<font fontName="MSGothic" pdfFontName="c:¥¥winnt¥¥fonts¥¥msgothic.ttc,1" size="10" isBold="false"
isItalic="false" isUnderline="false" isPdfEmbedded ="true" pdfEncoding ="Identity-H" isStrikeThrough="false" />WEB +DB PRESS Vol.17 ●157章

#4.form.iReport 03.10.7 11:15 AM ページ1 5 8○ iReport ○ Jakarta POI ○ JFreeChart＃4

PDF，Excelデータ，グラフ出力アプリの開発●図 13 Static Text タグ●図 14 Report Queryィールド名} で表現されます（図12-w，e）．

¡フィールド設定（図12-w）
フィールドを使用する場合には，以下の手順で使用するフィールドを登録します（図14）．
zデータソース設定アイコンを押し，[Report query]を開きます．
x[Report SQL query]タグを選択し，データ取得のためのSQL 文を記述します．
c[Read fields]を押すと，SQL文により取得されたフィールドが表示されます．
vレポート出力に使用するフィールドを選択し，[Register fields to report]を押しフィールドを登録します．
b[Save query to report]を押し，クエリを保存します．
登録したフィールドをデザイン編集エリアに追加します．
zフィールド設定アイコンを選択し，先ほど登録したフィールドが[Fields]タグに表示されていることを確認します（図15）．
xフィールドアイコンを選択し，表示場所に配置します．
c表示したフィールド表示領域をダブルクリックし，[Text Field]タグを選択します．
v[Textfield expression]に $F{フィールド名} と記述します（図16）．その際に登録したフィールドの¡フィールドでのJava プログラムの記述（図12-e）フィールドには，テーブルから取得したデータを表示する他に，任意のJavaプログラムを記述することもできます（図17）．
記述の際には，[Textfield expression]（図17-w）で作成されたデータ型と，[Textfield Expression Class]（図17-q）で指定した型が一致している必要があります．
本稿では，請求額の表示部分で以下のような計算式を使用しています．
"￥" + new DecimalFormat("#,###").format($V{TOTAL}.intValue() + $V{TAX}.intValue()) + "-" ※実際は1行また，記述するJavaプログラムに独自のライブラリを使用することも可能です．その際はクラスパスにライブラリを追加し，パッケージ名から指定します．

●変数の配置
変数とはレポートで使用する任意の値で， $V{変数名} で表現されます（図12-r）．
qフィールド設定アイコンを選択し，[Variables]タグを表示します．

[Class type]（図15）と[Textfield Expression Class]w[New]を押し，変数を新規に作成します．

（図16）が一致している必要があります．

e各フィールドを入力し，[OK]を押します（図18）．図158● WEB +DB PRESS Vol.17

#4.form.iReport 03.10.7 11:15 AM ページ1 5 9

iReport で簡単帳票作成
PDF/Excel/HTML 対応のGUI 帳票エディタ兼実行環境●図 15 Fields タグ●図 16 Text Field タグ

第1●図 17 Java プログラムの記述

q●図 18 Add/modify variablew18の例では，同一ページに存在する$V{SUBTOTAL}という変数の合計値としてTOTALというInteger型の変数を定義しています．
rフィールドアイコンを選択し，デザイン編集エリアに追加します．
t追加したフィールド表示領域をダブルクリックし，[Text Field]タグを選択します．
y[Text Field]タグを選択し，[Textfield expression]に $V{変数名} と記述します（図 19）．
u[Pattern]を設定することで，表示形式を指定でき●イメージの配置
イメージアイコンを選択し，イメージを配置します（図12-y）．配置したコンポーネントをダブルクリッ
クするとプロパティダイアログが表示されます．
[Image]タグ（図20）で，[Find...]を押し，任意のイメージを指定します．

請求書の生成実行ます（図19．現バージョンでは表示指定が1パターンのみ設定可能です．本稿では小数点以下を非表示にするために，テンプレートXML の<textField>
タグのpattern="#,##0.00"をpattern="#,###"と置換して使用しています）．

●図形の配置iReport 上から線分，四角形，四角形（角丸），円形が配置できます（図12-t）．
図形を組み合わせることで，表などの任意の表示形式が表現できます．

それでは，作成したテンプレートXML から帳票を作成してみましょう．
qコンパイルアイコンを押して，エラーがないことを確認します
iReport の出力からエラー原因が特定できない場合は，$IREPORT̲HOMEに出力されるソースファイル（テンプレート名.java）を直接コンパイルし，エラーメッセージを参照してください．
wコンパイルの正常終了を確認後，実行アイコンを押しますWEB +DB PRESS Vol.17 ●159章

#4.form.iReport 03.10.7 11:15 AM ページ1 6 0○ iReport ○ Jakarta POI ○ JFreeChart＃4

PDF，Excelデータ，グラフ出力アプリの開発●図 19 Text Field タグ●図 20 画像の表示

実行アイコン（空データソース使用）を押すと，テストールディレクトリを[JR̲HOME]とします．

ーブルからの情報取得を行わない状態で実行されます．

サンプルアプリケーションのコピー

e正常に実行が行なわれると，作成した請求書がPDFで表示されます

まず，JasperReports のサンプルを実行してみまし◇ ◇ ◇ょう． $CATALINA̲HOME/webapps 配下に，

iReport の操作説明は以上で終了です．以降では，$JR̲HOME/demo/samples/webapps をコピーしま

作成したテンプレートXML をWeb アプリケーションす．コピーしたディレクトリの名称をJasperReportsに組み込む方法について説明します．なお，Web アに変更し，Tomcatを起動します．

プリケーションに組み込む際はiReportは使用せず，実行環境であるJasperReports のみを使用します．

Web アプリケーションへの組み込みローカルでの帳票出力が正常に行われたら，作成したテンプレートXML をWeb アプリケーションに組み込みます．

サンプルアプリケーションのコンパイル
Tomcat 起動後，以下のようなURL にアクセスします．
http://ホスト名（IPアドレス）:ポート番号/JasperReports

画面左側のcompileを選択し，コンパイル画面を開きます．
executeを押し，コンパイルします．

●サーバ動作環境
ここでは，以下のサーバの動作環境が整っているものとします．
OS ：Red Hat Linux 8.0
JDK ：J2SDK 1.4.1
DBMS ：PostgreSQL 7.3.4
コンテナ：Tomcat 4.1.27
JasperReports ：バージョン0.5.0
なお，ここではTomcat インストールディレクトリを[CATALINA̲HOME]とし，JasperReports のイン

160● WEB +DB PRESS Vol.17

図21 のように表示されればコンパイルは成功です．

サンプルアプリケーションの実行
homeに戻りPDF output を押し，executeを押します．設定が正常に行われていると，サンプルのPDFファイルが出力されます．

作成したテンプレート XML の移行
ここでは，Webアプリケーションへの移行手順を簡単にするために，サンプルアプリケーションで使用したJSP ファイルを書き換えて使用します．

#4.form.iReport 03.10.7 11:15 AM ページ1 6 1

iReport で簡単帳票作成
PDF/Excel/HTML 対応の
GUI 帳票エディタ兼実行環境
q作成物のコピー●図 21 実行後，表示される画面

第1

サンプルアプリケーションが正常に実行できたら，以下のディレクトリに本稿で作成したテンプレート
XML（sample.xml）をコピーします．
$ CATALINA _HOME/webapps/JasperReports/reports

wJSP の書き換えの組み込みまでを駆け足で説明しましたがいかがでし「サンプルアプリケーションのコンパイル」で使用したでしょうか．

た JSP（$CATALINA̲HOME/webapps/Jasper

本稿では誌面の都合上紹介できませんでしたが，Reports/jsp/compile.jsp）を，図22 の白地部分のよ

iReportにはレポート中に別のレポートを埋め込む機能

うに修正します．

（サブレポート）やJFreeChart を利用したグラフ表示「サンプルアプリケーションの実行」で使用したJSPなど，多くの機能があります．本稿で紹介した以外の（$CATALINA̲HOME/webapps/JasperReports/jsp/機能を試す場合は，JasperReports のデモに含まれるpdf.jsp）を，図 23 の白地部分のように修正します．

テンプレートXMLをiReportに読み込ませ，改造する

JDBCの接続設定部分は環境に合わせて修正します．のが近道です．#e日本語の表示
日 本 語 を表 示 するためには， 図 2 4 のようにsample.xml の定義を変更します．
r実行サンプルと同様にコンパイル→実行を行います．

終わりにiReport の使用方法から，Web アプリケーションへ▼図 22

compile.jsp の修正：
JasperCompileManager.compileReportToFile(application.getRealPath("/reports/ sample.xmlsample.xml"));
：

▼図 23

pdf.jsp の修正：
sample.jasper
File reportFile = new File(application.getRealPath("/reports/sample.jasper"));：// データベースからデータを取得する場合には，JasperRunManagerにconnectionを渡す．
Class.forName("org.postgresql.Driver");Connection con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/DEV","user", "pass");byte[] bytes =JasperRunManager.runReportToPdf(reportFile.getPath(),parameters,con);
：

▼図 24

日本語表示のための定義の変更（kochi-gothic の場合）

usr/share/fonts/ja/TrueType/kochi-gothic.ttf size="12" isBold="false"
kochi-gothic pdfFontName="usr/share/fonts/ja/TrueType/kochi-gothic.ttf"<font fontName="kochi-gothic"
isItalic="false" isUnderline="false" isPdfEmbedded ="false" pdfEncoding ="Identity-H" isStrikeThrough="false" />WEB +DB PRESS Vol.17 ●161章