1read 100read
2013年03月プログラム327: [無料でラクラクJava帳票作成] JasperReports使い集合 (317) TOP カテ一覧 スレ一覧 2ch元 削除依頼
C++は難しすぎ 難易度:4 (419)
pythonがこの先生きのこるには (747)
VBSで便利なプログラムを作れスレ (547)
プログラムに詳しくなりたい (508)
日下部陽一著 作ってわかるCプログラミング(第6版) (533)
【C++】マイナーGUIツールキット (673)

[無料でラクラクJava帳票作成] JasperReports使い集合


1 :04/07/07 〜 最終レス :2012/09/11
JAVAで帳票作成するとなると
それなりの帳票ツールがないとテンテコ舞。
でも、帳票ツールは高い。
せっかくJavaとかTomcatとか無料で開発・運用できる環境があるのに
帳票も作りも無料でやりたいもんだ。
そんな救世主JasperReportsについて朝まで語り合いましょう。
http://jasperreports.sourceforge.net/
デザインツールiReportやJasperAssistantがなければ
ラクラクにはなりませんのでその話題も・・・。
http://ireport.sourceforge.net/
http://www.jasperassistant.com/index.html

1げっと。

2 :
ほほう、よさげですな。
マツリバイト文字とか大丈夫なのかな?
2グッシ

3 :
マルチバイトの間違い。。。
鬱age

4 :
横浜ベイキットやクリスタルレポートの帳票作成ツールとくらべどうなんだ?

5 :
>2
だいじょうぶだよ。

6 :
実際に使っている者だが
全角英字を項目名として使うとうまくないようだ。
DBと連携して帳票を出す際にテーブルの項目名が
全角英字だとそのままでは使えないのでSELECTの記述で
項目名に別名をつければいいよ。

7 :
おお、参考になるじゃねえか

8 :
JasperAssistantよさげだね。
でもフリーじゃないのね?

9 :
NuLabって会社が、JasperReportに関するPDF資料を公開してたんだけど、
サイトが落ちてるな。。。
ググったページ(PDF)のキャッシュのHTML版。
ttp://216.239.57.104/search?q=cache:pcmxkVssvzIJ:www.nulab.co.jp/docs/opensource-01-jasperreports.pdf+%22opensource-01-jasperreports%22+%22.pdf%22&hl=en&lr=lang_ja
画像全滅か。。。
元リンクは、これ。今はつながらない。
ttp://www.nulab.co.jp/docs/opensource-01-jasperreports.pdf

10 :
>>8
iReportで充分だよ
自分は公開されているiReportに関するPDF資料で
なんとか使えるようになったよ。

11 :
ソースのdori/jasper/engine/util/JRQueryExecuter.java
の209行目の
pstmt = conn.prepareStatement(queryString);

if (!queryString.substring(0,5).toUpperCase().equals("EXEC ")) {
pstmt = conn.prepareStatement(queryString);
} else {
pstmt = (PreparedStatement)conn.prepareCall(queryString);
}
に変更すればストアド対応になるよ。
java.sql.CallableStatement;
のimportも忘れずに。
SQL-Server + jtds0.5.2にて確認。

12 :
XMLファイルからjasperファイルにコンパイルする時にクラスファイルがないと
言われる場合は、中間でコンパイルに使うJavaファイルのどこかがおかしい。
XMLファイルのクラス指定あたりをチェックしてみるとよいかも。

13 :
複雑なレポートを作るのには本当に疲れた。
いくつもサブレポートを作って、更にその中にサブレポートがあったり、
グループがいっぱいあったり・・・。

14 :
>>12
XMLファイルの中にクラス指定って
Javaでいうimportみたいなことですか?
自分もコンパイルで「クラスが見つからないエラー」が出たとき
クラス指定のやり方が解からず、結局はクラスのURLを
フルパスで入れて対処しました。


15 :
>>14
フルパスで入れてOKならいいけど、どこを指定してもダメな場合がある。
大概の場合、これでエラーが出ると定義ファイルを疑った方がよさそう。
典型的なのは<textFieldExpression>
class属性のデフォルトはjava.lang.Stringなので、Integer型の変数とかを表示する際に
class属性を指定しないと、>>12で上げたようなエラーになる。

16 :
>>15
>典型的なのは<textFieldExpression>
>class属性のデフォルトはjava.lang.Stringなので、Integer型の変数とかを表示する際に
>class属性を指定しないと、>>12で上げたようなエラーになる。
なるほど、そうゆうことですね。
自分の場合は、DBから取得したデータ(コード)を画面に表示する際に
コードに対応した日本語表現に変換するクラスを作成したしたのですが
そのクラスを印刷するときにも流用させようと思って試行錯誤しました。
最初、作成したクラスをJavaのimportみたいなことで定義するには
どうやればよいのか調べたのですが、結局見つからずにフルパスでやったのでした。

17 :
ver0.5.3と0.6.0でクラス名が変わっているけど、
dori.jasper.engine ⇒ net.sf.jasperreports.engine 等
iReportやその他サンプルによって利用しているverがまちまちだったりする
ので注意。

18 :
そうそう・・・
変わったんだよね。
0.6.0にしたとたん動かなくなったのでびっくりした。
なぜ変えたんだろ。
意味は分からないけどdoriよりnetの方がカッコいいから?

19 :
sourceforgeで管理始めたから?
それにしても、sourceforgeつかったらnet.sfっていうパッケージ名が使えて便利だね。

20 :
はじめまして、
JavaでPDF帳票をつくりたいですが、サイトでいくら調べてて、
iReportとJasperReports組み合わせるほうがいちばんよいらしいです。
サンプルにみるとほとんど DBと接続して帳票がつくるものですが。
XML電文式のデータで帳票をつくったケースがありますか。
ご教授。

21 :
>>20
そういうケースは知らないけど、
インプットがDBでなくXMLであるのなら、
JRXmlDataSourceを使ってみては如何?

22 :
>>20
XMLデータのレポートはやったことがないし、
いまのところニーズもないけど、
JasperReportsのソースをダウンロードして
\demo\samples\xmldatasource
を参考にしたらよろしいかと・・・。

23 :
>>20
fop

24 :
iReportの使い勝手ってどうよ?
位置合わせが難しいわ、
XMLにコメントとか細かい設定をしても、iReportで更新したらおじゃんになるわで、
結局XMLをEclipseプラグインのX-Menでシコシコ書いているわけですが・・・
おれだけ?

25 :
>>24
俺も俺も!
自動生成系の奴は元のコメント残してくれるだけでもありがたいんだけどなぁっていつも思う

26 :
A4横のPDFをservletから直接プリンタへ出力すると
縦で印刷されたかのように右側が切れて印刷されるんだけど
誰か教えて!!
PDFそのものはアップロードさせて見てみたけど問題ないのです。

27 :
>>26
むしろ、プリンターの設定の問題じゃないの?

28 :
>>27
プリンタの設定は確認してないけど
PDFファイルに落としてAcrobatReaderで開いて
普通に印刷すると問題ないのです。はい。

29 :
JRPrintServiceExporter.javaの180行目を
下のようにしたら解決したのでご報告まで(<の部分を追加)
if (!printRequestAttributeSet.containsKey(MediaPrintableArea.class))
{
< if (printRequestAttributeSet.containsKey(OrientationRequested.class) && printRequestAttributeSet.containsValue(OrientationRequested.LANDSCAPE))
< printRequestAttributeSet.add(
< new MediaPrintableArea(
< 0f,
< 0f,
< (float)jasperPrint.getPageHeight() / 72f,
< (float)jasperPrint.getPageWidth() / 72f,
< MediaPrintableArea.INCH
< )
< );
< else
printRequestAttributeSet.add(
new MediaPrintableArea(
0f,
0f,
(float)jasperPrint.getPageWidth() / 72f,
(float)jasperPrint.getPageHeight() / 72f,
MediaPrintableArea.INCH
)
);
}
バージョン 0.6.2

30 :
>>29
乙!
デフォルトは縦になってるのか・・・。

31 :
Linuxサーバで帳票作るとき、フォントは何指定するの?
MS明朝?

32 :


33 :
AcrobatReaderで開いてから印刷したものと
JasperReportsを使って直接プリンタに印刷したものとでは
直接印刷したほうがちょっと拡大されてででくるよね。
それっておれだけ?

34 :
単純に縮小して印刷になってない?

35 :
>>34
特に縮小拡大の指定はしていないんですが、
印刷するアプリケーションが違うので多少の誤差は
あるとは思うけど・・・。
逆にチョット縮小させて出したいので縮小拡大の方法を
ご存知でしたらご存知でしたら教えてー。

36 :
縮小のやり方はJasperReportsを改造することで可能になったけど
オレの勘違いでAcrobatReaderで印刷するときに縮小印刷に
なっていた。(default?)
JasperReportsで出た大きさが正解ってことでした。
>>34
そのことを言いたかったのか・・・

37 :
サブレポートってどうやって作るんですか?

38 :
>>37
・レポートを作る
・そのレポートを別のレポートからsubreport要素を使って呼び出す
ま、サンプルがあると思うから、それを見てみるこった。

39 :
>>38
アドバイスに従って、サンプル(jasperreports-0.6.4/demo/samples/subreport)をまねてみたのですが、
以下のようなエラーが出ました。
Error filling print...
testdb $ testdb jdbc:mysql://localhost:3306/testdb
dori.jasper.engine.JRException: Could not load object from location : subReport.jasper
省略
print not filled. Try to use an EmptyDataSourse...!
環境は iReport-0.2.2 を使用しています。
御教授お願いします。

40 :
>>39
2ヶ月も前のレスにレスするのも何だけど・・・
XMLファイル内のJavaコードの記述に誤りがあるのではないかと。
要はサブレポートのjasperファイル(クラスファイルみたいなもの)が
コンパイルエラーで出来ていないということです。

41 :
iReport-0.4.1 上では日本語を表示できていたが、
アプリでPDFとしてエクスポートする機能を
使用したときに日本語を表示できない。
ttp://www.moriwaki.net/wiki/index.php?JasperReports
の「外部フォントを使用しない日本語表示」を参考に
iTextAsian.jar追加し、レポートのフィールドのプロパティを
変更してから実行すると日本語が表示できた。
日本語PDFを扱うのに iTextAsian.jar って必要なの?
iReport付属のライブラリだけではできないのかな?
やり方がおかしいのかな?

42 :

>>41
で、結局出来たのか出来ないのか、どっちなんだ!

43 :
>>41
必要だと聞いている。

44 :
1000ページぐらいあるレポート作成できる?

45 :
iReportで合計行を明細のすぐ下に出すにはどうしたらいいんですか?
どうしても合計行だけが離れて紙の一番下にへばりついてしまうんですけど。
a 100
b 200
c 300
計 600

46 :
>>45
レポート定義のXMLはどうなっているの?

47 :
補足。
例えば、jasperReport要素のisFloatColumnFooter属性にtrueを設定するといいかも。

48 :
>>46,47
iReport上からは変えられないんですか?
って見てみると、iReportのプロジェクトのオプションのところで
Floating column footerにチェックを入れると一番下だったのが
a,b,cから3行ぐらい開けた下あたりに表示されました。
フローティングしたいわけではなくて、a,b,cのすぐ下に出したいんですけど。
普通の帳票でよくある様に。

49 :
>>48
すぐ下に出すのがフローティングだと思うのだが。
3行ぐらい空いているのは別の要因だと思うが。

50 :
>>49
やっぱり分からない。
iReportで、detailのところでテキストフィールド1つおいて、detailの幅をそのテキストフィールドの高さにぴったりと合わせてます。
ボーダーつけて表示すると、データが5件あったら5つ箱が重なったみたいに表示されます。
ここまでは問題なし。
columnFooterもテキストフィールド1つおいて同様に、高さを上下の隙間無くぴったりと合わせてます。
すると5つの箱が重なったその下に2,3行分ぐらいの隙間をあけてぽつーんと1つ四角の箱が表示されます。
6つの重なった箱にしたいだけなのに、なんか設定が足りないんですかね。
設定する箇所もそんなにないんですけど。

51 :
日本語を含むレポートをJRHtmlExporterでエクスポートしたけど
日本語が文字化けしてしまいます。
日本語を扱うための追加処理が必要なんでしょうか?
ちなみに、JasperExportManager#exportReportToPdf を
使用したPDFへのエクスポートでは、正しく日本語が出ています。

52 :
JSP で contentType の指定が抜けていました。。。
逝ってきます。

53 :
オレiTextAsian.jarツカッテナイ
デモ、ニホンゴヒョウジデキタ
Windowsノフォントシカツカッテナイカラ?

54 :
>>53
iReport で、テキストフィールドの Font の設定のところの
Report font、Font name、 PDF font name、TrueType font、
PDF Encoding は何を指定しているの?

55 :
ttp://www.aware.jp/pdf/jasper_jp.html
で、JasperReportsでフォントを埋め込まない日本語PDFを
生成する方法はわかるんだけど、
フォントを埋め込んで日本語PDFを生成するにはどうすればいいの?

56 :
iReport 0.4.1 ってメニューを日本語で表示でけたのね。。。。

57 :
でもメニューだけって感じで中途半端だよね。

58 :
iReport で
SELECT * FROM TABLENAME WHERE KEY = :variable
ようなバインド変数を使ったSQLを使用してレポート作ることができますか?

59 :
iReport でパラメータの追加/修正のところの
Is for prompting ってなんなの?
チェック入れてもはずしても効果がないんだけど。
てっきり、パラメータを入力するダイアログかなんかが
出てくると思ったんだけど。

60 :
iReport でレポートSQLクエリを複数入力したいんですけど、
無理ですか?

61 :
金額表示を3桁カンマ区切りで表示したいんだけど、
どうすればいいのかな?

62 :
>>61
テキストフィールドのプロパティでパターンを指定する。

63 :
>>54 コンナカナジデス。
<reportFont name="STD_FONT" isDefault="false" fontName="MS ゴシック"
size="10" isBold="false" isItalic="false" isUnderline="false"
isStrikeThrough="false" pdfFontName="C:\WINNT\FONTS\MSGothic.ttc,0"
pdfEncoding="Identity-H" isPdfEmbedded="false"/>


64 :
>>58
できますよぉ〜。

65 :
>>60
無理じゃないかしら。
レイアウトが見えないのでなんともだけど
JOINしてなんとか1クエリにまとめるか
サブレポート化するなどすればなんとかなるかも

66 :
>>58
こんな感じだ
<parameter name="MaxOrderID" class="java.lang.Integer"></parameter>
<queryString><![CDATA[SELECT * FROM Orders WHERE OrderID <= $P{MaxOrderID} ORDER BY ShipCountry]]></queryString>
くわしくはdemoのFirstJasperなんかをLOOK

67 :
>>62
できました。パターンをいろいろ指定できるんですね。
パターンを指定するところでCurrencyという¥#,##0.00の
パターンを選んだときにフォントを日本語にしないと
円マークってでないんですね。全角だから?
気付くのに時間がかかった。。。

68 :
>>67
日本以外で円マークを使っている国はあるのか?

69 :
円を取引していれば国に関係なく使うんじゃ?

70 :
iReport で縦書きのフィールドを作成できるのでしょうか?
改行いれながら調整するしかないんでしょうか?

71 :
iReport 0.4.1 でパワーポイントのテキストのように
「テキストにあわせて描画オブジェクトのサイズを調整する」
ようなことってできますか?
ぽちぽちっと適度なサイズに変更したいんですけど。

72 :
iReport で枠を書くのって、バンド毎に縦線を引かなきゃ
いけないんでしょうか?次のようなレポートだと、縦線が
6本必要になりますよね?もっとうまいやり方があるんでしょうか?

|氏名   |年齢|
−−−−−−−−−
|$F{name}|$F{age}|

73 :
>>71
ワシも知りたい。
>>72
エリアごとに四角を配置してみるとか?

74 :
>67, 69
円マークは使わないよ。
JPYとかが一般的じゃない?
アメリカドルならUSDとか。

75 :
iReport でバーコードを使えるみたいなんですけど、
これって実用レベルに達しているのでしょうか?
それと、プロパティのBarcode expressionってStringで表現
しないとコンパイルが通らないです。でも、ダブルクオートで
表現したいコードを囲むと、iReport上のバーコードオブジェクトが
Barcode Errorで表示されてしまう。う〜ん。

76 :
それと、バーコードの高さが半端なんだけど、
調整できないのかな?

77 :
>>70
1行だけなら縦長のフィールドを作成して
自動改行させればできるが、縦文字のフォント
を使わないと長音(ー)とか括弧なんかは変になってしまうよ

78 :
>>65
複数クエリは無理なんですか。。。
メインで扱うデータを取得するSQLはレポートSQLクエリに、
それ以外のデータは、パラメータ化してレポートに渡すか、
サブレポートで、というのがお作法なんでしょうか。
レポートに複数SQLを埋め込めたほうが、SQLがまとまって
いいような気もするけど。

79 :
>>64, >>66
できまつた。
それとJava 側からバインド変数へ値を渡すにはHashMapを使うんですね。
また、SQLの条件句自体をパラメータ渡ししたいときは$P!{hogehoge}
ってのが使えるんだね。

80 :
>>78
作法というか
おかれている環境、状況で工夫するしかないと思います。
複数SQLを埋め込める帳票ツールがあってそれを導入することが
できるのならそれを用いればよいし。。。
メインのデータとそれ以外のデータに結合点があればJOINすればいいし
そうでなければストアドなどで無理やり1つのResultSetを作り出せば
いいんじゃないかと。

81 :
iReport 0.4.1 のdocs/cap7.html を参考に,
7.3章のXML Datasource Syntax を試しているんだけど、
+、@、*のシンボルがエラーになる。
例えば、次のように設定してid属性値を取得しようとしても
一番下のようなエラーが出る。
・XML Datasource
Name: Hello
XML file: C:\hello.xml
Select Expression: /hello
・Fields
Field Name, Field, Description Type
hello, /hello, java.lang.String ○ このフィールドは表示可能
id, /hello@id, java.lang.String × エラーになる
・hello.xml の内容
<hello id="id">hello</hello>
・iReport 上でのエラーメッセージ
Filling report...
Error?filling?print...
javax.xml.transform.TransformerException:?余分な不正トークン:?'@',?'id'
(エラーメッセージって日本語で出力されてたから
□□□になってたんですね。。。)

82 :
>20 さんは XML Datasource を問題なく使えたのかなぁ。。。

83 :
iReportで作ったXMLを
PHPでPDF出力するようなソリューションってころがってないかにゃー。

84 :
>>83
お、それいただき!

85 :
iReport 0.5.0 release!!

86 :
JasperReportsをWeb(Struts)で使って、PDFを出力しようとしています。
XMLからJasperReportインスタンス(空のレポートインスタンス?)
を生成するところで、数秒かかってしまってます。
このインスタンスを再利用できれば、パフォーマンスが上がるかなって思ってます。
再利用は可能でしょうか?
JasperReportインスタンスは一つだけ作っておき、リクエスト毎にJasperPrint
インスタンスを作るって方法です。
要するに、JasperReportインスタンスはスレッドセーフに使えるのでしょうか?
APIやその他ドキュメントを見ても良く分かりませんでした。
宜しくお願いします。

87 :
jrxml → jasper のコンパイルが遅いということを言っているなら、
コンパイル済みjasper ファイルを実行時に読み込んでバインド→PDF出力、ということを、
サンプルの JasperPrintServlet.java でやってる。

88 :
>>87
サンクスです。
このjasperファイルってJasperReportインスタンスをシリアライズ
したものなんですよね?
ファイルの読み込みってシンクロナイズする必要ありましたっけ?
StrutsのActionはスレッドを意識しないで組みたいなって思ってますので。
自分ももうちょい調べてみます。

89 :
>>88
Jasperはxml(jrxml)で定義したデザインファイルをJavaバイトコードに
コンパイルしたものだったと記憶してますが、
なのでPDFを出力するたびにアプリケーションでjasperを作り出すのは
どうかと思います。
わてはAntの段階でjasperにしてリリースしてまっせ。
そんためには、jrxml→jasperにするためのツールを
JAVAで作ってAntで実行せにゃいかんね。

90 :
JasperReportsをWeb(Struts)で使って、PDFを出力しようとしています。
XMLからJasperReportインスタンス(空のレポートインスタンス?)
を生成するところで、数秒かかってしまってます。
このインスタンスを再利用できれば、パフォーマンスが上がるかなって思ってます。
再利用は可能でしょうか?
JasperReportインスタンスは一つだけ作っておき、リクエスト毎にJasperPrint
インスタンスを作るって方法です。
要するに、JasperReportインスタンスはスレッドセーフに使えるのでしょうか?
APIやその他ドキュメントを見ても良く分かりませんでした。
宜しくお願いします。

91 :
>>89
APIドキュメント見る限りではJasperReportのインスタンスっぽいですが?
JasperCompileManager#compileReportToFile()を見てみてください。
どっちにしろWebでやる場合、リクエスト毎にjasperファイルを読み込む
必要があるってことなんですか?
メモリ上に持ってきたインスタンスを使いまわせればいいんですがね〜

92 :
>>91
Jasperは最終的にはインスタンス化しますが、インスタンスにする前に
インスタンスのクラスを作らなければなりませんよね。
クラスを作るにはレイアウト(jrxml)からコンパイルされるということです。
>どっちにしろWebでやる場合、リクエスト毎にjasperファイルを読み込む
>必要があるってことなんですか?
です。
jasperを読み込むのとjrxmlを読み込んでコンパイルするのとでは
前者のほうが明らかにパフォーマンスで勝るのは理解できると思います。

93 :
92だけど補足
>メモリ上に持ってきたインスタンスを使いまわせればいいんですがね〜
使いまわすかどうかは考え方次第。
消費メモリを気にしないのであれば、常駐化すればいいし
そうでなければ毎回Jasperファイルを読めばいいし、
というところでしょう。
少なくとも私の環境では毎回Jasperファイルを読んでも体感的には
変らないのでメンテナンスの楽な後者の方法を選択しました。

94 :
>>92-93
サンクスです。
jrxmlからJasperReportのサブクラスを作ってインスタンスをって流れですかね?
とりあえず、リクエスト毎にjasperファイルを読み込む方向で進めてみます。
さらに質問なんですが、jasperファイルを読み込むところは排他取らなくも
大丈夫ですか?
もし必要になるなら並行度上げる小細工を考える必要あるなって思いまして。

95 :
楽々なんてウソ!汗たらたらジャン!

96 :
>>94
Youがどのようなタイミングでやるかは解らないけど、
jasper(JasperReport)をスタック上に展開すれば問題ないはず

97 :

JasperReport死亡かも
Eclipse Foundation,レポーティング・ツール「BIRT 1.0」を発表
ttp://itpro.nikkeibp.co.jp/free/ITPro/USNEWS/20050608/162307/
だれか試して!

98 :
最近人から聞いたやつけど、Jasperとはどう違うか知ってる人います?
OpenFunXion for iText
ttp://www2.nobworks.co.jp/nobworks/productsTop.html

99 :
1.0.0 リリース記念age

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
D言語 Part31 (270)
Borlandにはやられた... (367)
C言語をやりたいんですが (261)
今まで見た中で一番すげーコメント (575)
C#,C#の宿題片付けます。 (796)
魁け! Ruby 1.9.X (310)
--log9.info------------------
鹿児島エギングスレ3 (804)
〜宮城の釣り〜釣行53日目〜 (323)
 ■ ■ ■ タナゴ釣り 5竿目 ■ ■ ■  (271)
【スマホ】釣りに最適な携帯電話スレ【ガラケ】 (632)
【赤い稲妻】京急で釣りに行こう!【東京湾全域】 (418)
【まじめに】福岡シーバス情報3【情報交換】  (579)
【渓流竿】⌒ 手竿で海釣り ⌒【へら竿】 (932)
【山女魚】渓流ヒマつぶし15【雨子】 (634)
釣り板自治スレ31 (588)
【金森隆志】捏造疑惑でフルボッコ50♪POW【カナモ】 (395)
奥多摩湖を語る 1ドラム (744)
――――琵琶湖おかっぱり情報 Part72―――― (923)
【あと】 POPEYE -17店舗目 【6店舗】 (791)
ノース・フォーク・コンポジット (343)
俺達にはダイコーがある Vol.21 (884)
【DC】スコーピオンについて語るスレ★9【XT】 (283)
--log55.com------------------
ネタボケライフ お盆
☆ピコ手専用★売り方見せ方アイデア集!Part21
同人誌の価格について◆その40
【制作者専用】同人音声制作について語るスレ Part13
【大手スレ派生】何が何でも商業したい7【絵描き専用】
絵描きさん雑談スレ46
【絵描き専用】何が何でも大手になりたい【オフ専用】◆5830
ヤフオクの手描きイラストで頑張るスレ15