JasperReportsとiReportで帳票の常識を理解しよう業務アプリの常識をJavaオープンソースで身につける(2)(2/4 ページ)

» 2010年12月01日 00時00分 公開
[久保田大輔adempiere.jp]

最も簡単な帳票を出力してみよう

 メニューバーの[ファイル]から[New...]を選び、[New file]ダイアログを表示してください。このダイアログでは、新しいjrxmlファイルを作成できます。

 テンプレート一覧から「Blank A4」を選択して、右下の[Open this Template]を押すと、ファイル保存のためのダイアログが表示されます。ファイル名や保存場所を指定して新しい帳票を作成してください。これで、空の帳票が作成されます。

まずは空の帳票が作成する

 帳票の部品を配置するには、パレットウィンドウにある部品をドラッグ&ドロップします。メニューバーの[ウィンドウ]→[パレット]を選択して、パレットを表示してください。パレットには、帳票に追加できる部品が表示されています。「Static Text」を、作成した帳票のDesignerタブにドラッグ&ドロップしてください。

 Static Text(固定文字列)が帳票に配置されます。ほかにもいろいろな部品がありますが今回は「Static Text」のみを配置して帳票を出力してみます。

 次にデータソースを設定します。ほとんどの場合、帳票を出力するときは、データベースに接続して、データベース内のデータを表示するのですが、はじめは、空のデータソースで帳票を出力します。

 ツールバーにある、以下のようなデータベースのマークに電源プラグが付いているアイコンがデータソース(接続先データベースなど)の設定のためのアイコンです。

データソース(接続先データベースなど)の設定のためのアイコン

 作成した帳票のファイル名が表示されているタブの下にある、[Designer][XML][Preview]の中から[Preview]を選ぶと、帳票のプレビューが表示されます。

[Preview]を選択した画面

 以上が帳票を作成するための一番簡単な方法です。

PDFで日本語を表示するための設定

 iReportでは、メニューバーの[Preview]から、[PDF Preview]を選択することにより、PDFでプレビューできます。この場合、日本語を表示するには、フォントとクラスパスの設定が必要です。

 フォントについては、テキストのプロパティでフォントを指定します。「Static Text」コンポーネント、または「Text Field」コンポーネントのプロパティで、[Pdf Font name]に「HeiseiKakuGo-W5」または「HeiseiMin-W3」を、[Pdf Encoding]に「UniJIS-UCS2-H (Japanese)」を指定することで日本語が表示されるようになります。

日本語が表示されるようになったところ

 プロパティは、メニューバーの[ウィンドウ]→[プロパティー]を選択することで表示できます。

 クラスパスには、「iTextAsian.jar」ファイルを追加する必要があります。iReportのメニューバーにある、[ツール]→[オプション]→[iReportアイコン(初期状態)]→[Classpath]タブで、右側にある[Add JAR]ボタンをクリックして「iTextAsian.jar」を指定します。iTextAsian.jarは、iReportをインストールしたフォルダの「ireport\modules\ext」にあります。

C:\Program Files\Jaspersoft\iReport-3.7.6\ireport\modules\ext\iTextAsian.jar

 これでPDFプレビューで日本語が表示できるようになります。

 また、プロパティの[Pdf Font name][Pdf Encoding]に、PCにインストールされているフォントファイルを指定することで、そのフォントで表示できます。

例:「Pdf Font name」に
C:\WINDOWS\Fonts\MSGOTHIC.TTC,1
例:「Pdf Encoding」に
Identity-H (Unicode with horizontal writing)

 「C:\WINDOWS\Fonts\MSGOTHIC.TTC,1」の最後の「,1」は、*.ttcファイルに入っている複数のフォントの中からフォントを指定するためのものです。

JasperReportsを使ったアプリへの組み込み

 以上のようにして作成したjrxmlファイルは、アプリケーションに組み込まれたJasperReportsのライブラリを使って帳票として出力できます。

 サンプルコードを以下に示します。

import java.io.File;
import java.util.HashMap;
 
import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
 
public class Sample1 {
    /**
     * @param args
     */
    public static void main(String[] args) {
        try    {
            // jrxmlを指定する
            File jrxmlFile = new File("C:\\Adempiere\\reports\\sampleReport1.jrxml");
            if(jrxmlFile.exists()){
                // jrxmlをコンパイルする
                JasperReport jasperReport = JasperCompileManager.compileReport(jrxmlFile.getAbsolutePath());
                HashMap<String, Object> params = new HashMap<String, Object>();
                // データソースにあるデータを、コンパイルされた帳票に入れる
                JasperPrint print = JasperFillManager.fillReport(jasperReport, params, new JREmptyDataSource());
                // 出力用のPDFを指定する
                File Pdf = new File("report1.pdf");
                // 帳票の出力
                JasperExportManager.exportReportToPdfFile(print, Pdf.getAbsolutePath());
            }else{
                System.out.println("jrxmlファイルが見つかりませんでした。");
            }
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}

 このサンプルコードをEclipseで動かすための簡単な説明をします。

■ 【1】Eclipseで新規プロジェクト作成

 Eclipseメニューバーから[File]→[New]→[Java Project]から新しくプロジェクトを作成します(プロジェクト名は、「JasperSample」など、適当な名前を付けてください)。

■ 【2】Eclipseで新規クラス作成

 パッケージエクスプローラーでプロジェクトを右クリックして、コンテキストメニューから[New]→[Class]を選択してください。

 [New Java Class]ダイアログが表示されるので、名前に適当なクラス名(Sample1など)を指定して、[public static void main(String[] args)]のチェックボックスをチェックしてください。右下の[Finish]ボタンを押すと、サンプル用のクラスが生成されます。

■ 【3】サンプルコードをコピペ

 サンプルコードをコピー&ペーストしてください。

■ 【4】JasperReportsなどのjarファイルをビルドパスに追加

 外部jarファイルをビルドパスに追加します。

 サンプルコードを動かすには、「JasperReports - InstallationWiki」に書かれているように、JasperReportsのjarファイルなど、7つの外部jarファイルをビルドパスに追加する必要があります。これらのjarファイルはWeb上からダウンロードできますが、iReportをインストールしたフォルダの「ireport\modules\ext」にもあります。

C:\Program Files\Jaspersoft\iReport-3.7.6\ireport\modules\ext\commons-beanutils-1.8.2.jar
C:\Program Files\Jaspersoft\iReport-3.7.6\ireport\modules\ext\commons-collections-3.2.1.jar
C:\Program Files\Jaspersoft\iReport-3.7.6\ireport\modules\ext\commons-digester-1.7.jar
C:\Program Files\Jaspersoft\iReport-3.7.6\ireport\modules\ext\commons-logging-1.1.jar
C:\Program Files\Jaspersoft\iReport-3.7.6\ireport\modules\ext\iText-2.1.7.jar
C:\Program Files\Jaspersoft\iReport-3.7.6\ireport\modules\ext\iTextAsian.jar
C:\Program Files\Jaspersoft\iReport-3.7.6\ireport\modules\ext\jasperreports-3.7.6.jar

 ちなみにxls形式で出力する場合は、Apache POIのjarファイルも必要です。

C:\Program Files\Jaspersoft\iReport-3.7.6\ireport\modules\ext\poi-3.6-20091214.jar

 POIの使い方 については、以下の記事も参考にしてください。

 Eclipseでビルドパスに追加するには、パッケージエクスプローラーでプロジェクトを右クリックして、コンテキストメニューから[Properties]を選択してください。

 [Properties for JasperSample](JasperSampleの部分は作成したプロジェクト名)というダイアログが表示されるので、左メニューの[Java Build Path]→[右のLibrariesタブ]→[Add External JARs...]ボタンを押して、jarファイルを選択してください。

■ 【5】Expression用の言語を変更

 iReportでは、値のExpression(表現)に使われる言語が、デフォルトで「Groovy」になっているため、iReportの[Report Inspector]のツリーから、トップの階層(ファイル名と同じ名前)を選び、プロパティのLanguageをJavaに変更してください。

■ 【6】プログラムの実行

 これでサンプルのPDFを出力できる状態になっていると思います。プログラムを実行してみてください。Javaのプログラムと同じ階層にreport1.pdfが作成されているはずです。

出力したサンプルのPDFを開いたところ

 なお、このサンプルコードでは、空のデータソースを使っています。通常は、帳票生成時にデータベースのコネクションを引数として渡します。アプリからJasperReportsに渡す、パラメータの設定も省略していますが、このコードで帳票は生成できます。このサンプルの.jrxmlファイルはこちらからダウンロードできます。

 次ページからはデータソースとしてデータベースを指定して帳票を出力する方法やXLS形式での出力などについて解説します。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。