Jasperレポート作り方 ~iReport(基本編)~

#iReportDesignerとは？
Jasperレポートを作成する為のツール
そもそもJasperレポートって何？って部分は省きます。

Jasperレポートをグラフィカルに作成するには通常 iReportDesigner もしくは JasperSoftStudioで作ります。両者とも.jrxmlというxml形式のファイルをコンパイルして.jasperという形式のファイルを作成します。

公式としては、iReportDesignerは5.6で開発が終了しているのでJasperSoftStudioを使う事が推奨されています。が・・私のPCと相性がよくなかった(謎に動作が重い)ので、ここではiReport(5.5.0)を使った帳票作成の手法を説明します。基本的な作法はどちらも変わりません。

今回は帳票を作成する基本的な流れを説明します。
ググレば分かる情報が多いのですが断片的だったりするのでこの際、纏めておきます。

より発展的な変数合計やサブレポートの作り方は**余力があったら**応用編として書きます(_ _)

#導入手順


Windows7にインストールする際は、Jasper Communityより
好きなバージョンのインストーラーを[ダウンロード](https://community.jaspersoft.com/project/ireport-designer/releases)し、導入できます。

Windows10にインストールする際は、ひと手間かける必要があります。
詳細は[taku_0630様の投稿](https://qiita.com/taku_0630/items/e1eee9d0a93ca4d1089f)を参考に。


#作成の大まかな流れ

1.　接続情報を記述して対象のDBに接続する
2.　SQLを記述して対象データを取得する
3.　フィールドやアイテムをポチポチ配置
4.　コンパイルしてできあがり(実際はアジャイル的に2,3の間で繰り返します)

基本的には、帳票を作成する際はこの流れになると思います。
この他にもDaoから生成する方法等あるようですが、ここでは割愛します。

#1. 接続情報を記述して対象のDBに接続する
よし、帳票を作るぞ！となる意気込む前に少々下準備が必要です。

まずは、以下の手順でDateSourceを追加します。

##青枠で囲ったボタンを押下
![帳票1.png](https://qiita-image-store.s3.amazonaws.com/0/240108/e84a1a2f-4b1f-ef40-1404-d616f460fad9.png)

##Newボタン押下、Datesourceを選択
![帳票2.png](https://qiita-image-store.s3.amazonaws.com/0/240108/6601e28b-02ff-4552-8e4b-dea2d78bc250.png)

![帳票3.png](https://qiita-image-store.s3.amazonaws.com/0/240108/12989720-ccb9-3655-30c9-7b5ef4c37f87.png)

##接続情報を記述
 この時Save passwordにチェックを入れTestを押下して接続を確認
![帳票4.png](https://qiita-image-store.s3.amazonaws.com/0/240108/51b6052c-220c-ff4c-d8ba-946103d6fe91.png)

接続確認がとれたら、Saveを押下するとDateSourceの一覧に追加される
Defaultにチェックを入れると、次回以降の帳票作成時もこのDatesourceが選択される
![帳票5.png](https://qiita-image-store.s3.amazonaws.com/0/240108/a3b43d3b-d7cf-b484-2206-a2d855629be0.png)

##作成したDateSourceに切り替える
![帳票6.png](https://qiita-image-store.s3.amazonaws.com/0/240108/e7c076e4-2da1-1894-7968-6571d2207113.png)

#2. SQLを記述して対象データを取得する
下準備も終わりましたので、実際に帳票を作っていきます。
が...データがないので一旦、雛形を作りデータを引っ張ってきます。

##ファイル(F) ＞ New... を押下
New file というダイアログがでて、ファイルの種類を選べます。
Report より Blank A4を選択しOpen this Templateを押下します。(A4サイズの帳票が作られます)
![帳票7.png](https://qiita-image-store.s3.amazonaws.com/0/240108/4c0900ef-8cd0-bdd4-dc00-43e731b16f8a.png)

##保存場所を選択、次へ ＞ 完了(F)を押下
![帳票8.png](https://qiita-image-store.s3.amazonaws.com/0/240108/a089172e-b6ed-594e-442f-c8a382ee2ee7.png)

##帳票画面が作成される
![帳票9.png](https://qiita-image-store.s3.amazonaws.com/0/240108/138cead2-4e0f-bbe6-1148-9bc50b58aef7.png)

##SQLを記述する
帳票の雛形ができたので、SQLを書いてデータを引っ張ります。

青枠で囲ったボタンを押下
![帳票9.png](https://qiita-image-store.s3.amazonaws.com/0/240108/4b5d7e4f-ce93-fe61-5eaf-582fc4d730d2.png)


Queryビューが開くのでSQLを記述(ここではiDempiereを例に)
デフォルトでAutomatically Retrieve Fieldsにチェックが入っているので、Queryビューに記述したSQLが
実行可能なものであれば勝手にFieldがでてきますが、読み込まないときはRead Fieldsを押すとSQLが再実行されます。
OKを押下して閉じる。※この時OKを押さずに閉じるとクエリーが保存されないので注意
![帳票11.png](https://qiita-image-store.s3.amazonaws.com/0/240108/47df87db-57d3-29e4-a857-8817cc993b42.png)

#3. フィールドやアイテムをポチポチ配置
ようやく、データの準備が整ったので、帳票を作ります。

##パレットを追加
ウィンドウ(W) ＞　パレット(T)を押下
画面右端にパレットウィンドウが追加される。

![帳票12.png](https://qiita-image-store.s3.amazonaws.com/0/240108/8057f886-ad01-d21a-658e-55cf23724ffb.png)


たくさんのアイテムがあってどれを使うのか、迷いますが基本的には青枠で囲ったアイテムで十分です。
名前的に察せますが

・Static Text = 静的文字(帳票名などの固定文字)
・Text Field  = 動的文字(価格などの変動文字)
・Image       = 画像(後述のパスの設定が必要)　　というイメージです。

同様に帳票画面上の各項目について説明します。
こちらも名前的に察せますが、２点特別な項目があります

・Title          =タイトル(○○伝票といった帳票名など)
・Page Header    =ヘッダー(合計金額や注文日など)
・Column Header  =カラムヘッダー(繰り返し項目のラベル)
・**Detail 1**   =ディティール(繰り返し項目。ここに記述した内容は自動的に繰り返される)
・Column Footer  =カラムフッター(備考・小計/消費税/合計など)
・Page Footer    =フッダー(今回は使いません)
・Summary        =サマリー(今回は使いません)
・**Background** =バックグラウンド(上記の画面にアイテムを上乗せできる。固定で枠線を引くように利用)

各項目は自由に大きさを変更できます。
ただし、項目間を跨っての定義はできません。
※デザインがおかしいとアイテムが赤くなります。

以下ＮＧ
![帳票14.png](https://qiita-image-store.s3.amazonaws.com/0/240108/44848b6c-e9d9-484b-bae4-65ca1d645f37.png)


##Static Textを配置
固定文字を配置していきます。
フォントの大きさ/太字/斜体/左寄・右寄といった情報はアイテムを押下しプロパティから編集できます。
また、Report Inspectorを見ると、各項目にアイテムが追加されているのが確認できます。

![帳票13.png](https://qiita-image-store.s3.amazonaws.com/0/240108/5e1b52bd-ff40-a629-1831-4da04a8b2c41.png)

アイテムに枠線をつけたい場合、アイテムを右クリックしPadding And Bordersで設定できます。
![帳票15.png](https://qiita-image-store.s3.amazonaws.com/0/240108/2de985d5-09d8-976e-3933-4352d0faaf7b.png)

これで、固定文字だけの帳票が完成しました。
Previewボタンを押下すると、現在の帳票を確認することができます。

![帳票16.png](https://qiita-image-store.s3.amazonaws.com/0/240108/a25243b6-f7da-4455-4ba5-f9879e282630.png)

固定文字だけですので、まだ帳票と呼ぶにはお粗末です。というわけで続いて
##Text Fieldを配置
パレットからテキストフィールドを追加すると、$F{field}という名前のテキストが入力されていますが
これを、右クリック ＞　Edit expressionで編集します。

![帳票18.png](https://qiita-image-store.s3.amazonaws.com/0/240108/57378cb9-3945-be0f-88a2-fd0808d35872.png)

\\$F{field}を消し、$F{c_order_id}と入力します。この時、対象のFieldを押下すると、自動で入力されます。
![帳票19.png](https://qiita-image-store.s3.amazonaws.com/0/240108/9e29da8e-4c82-b6ed-2371-a9026832aac6.png)

同じ手順でポチポチとフィールドを追加していきます。
![帳票20.png](https://qiita-image-store.s3.amazonaws.com/0/240108/3733aaed-4ac8-d1a1-ff3d-34248f1cc895.png)

一旦プレビュー！
![帳票21.png](https://qiita-image-store.s3.amazonaws.com/0/240108/d68bcfab-b6c5-6957-9f1c-158e9bf8f4ab.png)



**うーん。。**
注文日付が格好悪いです。yyyy/mm/ddの形式で出したいのですが、ここでは
あくまでDBの中身をそのまま表示しているだけなのでこういう結果になってしまいます。

変えましょう！
SQLの取得の仕方を変えても良いのですが、
テキストアイテムの中にはJavaの簡単なJavaの構文を記述できます。

![帳票22.png](https://qiita-image-store.s3.amazonaws.com/0/240108/7d4d9b17-0be2-19cf-68d5-3435dfefd30e.png)

プレビュー！

![帳票23.png](https://qiita-image-store.s3.amazonaws.com/0/240108/e260d02d-b8f4-1bab-9cca-2859b22cc7c0.png)

希望通りに表示できました ^^

##Imageを配置
続いて、画像を配置する方法です。
画像の配置には２つあります。

1.パスを指定し、固定パスで表示する
2.DBに登録した画像を動的に表示する

2.は応用編で書きますので、ひとまず1.のやり方を書きます。

ここでは、作成中の注文書の左上にロゴを追加してみます。
Imageビューを追加すると、Select an image file...というダイヤログが表示されます。
ここに、画像のパスを指定します。
![帳票24.png](https://qiita-image-store.s3.amazonaws.com/0/240108/d245373f-bd10-9d55-a962-45e9fe16b67f.png)

![帳票25.png](https://qiita-image-store.s3.amazonaws.com/0/240108/1710ac8d-19a0-088b-7d75-d25111598b9f.png)

追加されましたので、いざプレビュー
![帳票26.png](https://qiita-image-store.s3.amazonaws.com/0/240108/d710a864-c714-3549-a177-2293fd797b57.png)

だんだん帳票っぽくなってきました～

#4. コンパイルしてできあがり
 2~3を繰り返えすと、帳票にアイテムが増えこんな具合になっていきます。
![帳票27.png](https://qiita-image-store.s3.amazonaws.com/0/240108/3b199d7e-6071-cacb-3366-1df2f0dfec1e.png)

プレビュー！
![image.png](https://qiita-image-store.s3.amazonaws.com/0/240108/246bb3ec-66bb-aaf1-9f96-e6f48ddc7f72.png)
完成～

最後に青枠のボタンを押下し、コンパイルします。
![帳票28.png](https://qiita-image-store.s3.amazonaws.com/0/240108/67df1a86-c582-90bb-59f3-cc001173790a.png)



これによって、カレントディレクトリに.jrxmlという形式から.jasperという形式のファイルが作られます。
お疲れ様でした!