トップページ⇒tech
314コメント125KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
JAVAで帳票作成するとなると
それなりの帳票ツールがないとテンテコ舞。
でも、帳票ツールは高い。
せっかくJavaとかTomcatとか無料で開発・運用できる環境があるのに
帳票も作りも無料でやりたいもんだ。

そんな救世主JasperReportsについて朝まで語り合いましょう。
http://jasperreports.sourceforge.net/

デザインツールiReportやJasperAssistantがなければ
ラクラクにはなりませんのでその話題も・・・。
http://ireport.sourceforge.net/
http://www.jasperassistant.com/index.html


1げっと。
0002デフォルトの名無しさんNGNG
ほほう、よさげですな。
マツリバイト文字とか大丈夫なのかな?

2グッシ
00032NGNG
マルチバイトの間違い。。。

鬱age
0004デフォルトの名無しさんNGNG
横浜ベイキットやクリスタルレポートの帳票作成ツールとくらべどうなんだ?
0005デフォルトの名無しさんNGNG
>2
だいじょうぶだよ。
0006デフォルトの名無しさんNGNG
実際に使っている者だが
全角英字を項目名として使うとうまくないようだ。
DBと連携して帳票を出す際にテーブルの項目名が
全角英字だとそのままでは使えないのでSELECTの記述で
項目名に別名をつければいいよ。
0007デフォルトの名無しさんNGNG
おお、参考になるじゃねえか
0008デフォルトの名無しさんNGNG
JasperAssistantよさげだね。
でもフリーじゃないのね?
0009デフォルトの名無しさんNGNG
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
0010JasperReportsNGNG
>>8
iReportで充分だよ
自分は公開されているiReportに関するPDF資料で
なんとか使えるようになったよ。
0011デフォルトの名無しさんNGNG
ソースの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にて確認。
0012デフォルトの名無しさんNGNG
XMLファイルからjasperファイルにコンパイルする時にクラスファイルがないと
言われる場合は、中間でコンパイルに使うJavaファイルのどこかがおかしい。

XMLファイルのクラス指定あたりをチェックしてみるとよいかも。
0013デフォルトの名無しさんNGNG
複雑なレポートを作るのには本当に疲れた。
いくつもサブレポートを作って、更にその中にサブレポートがあったり、
グループがいっぱいあったり・・・。
0014デフォルトの名無しさんNGNG
>>12
XMLファイルの中にクラス指定って
Javaでいうimportみたいなことですか?

自分もコンパイルで「クラスが見つからないエラー」が出たとき
クラス指定のやり方が解からず、結局はクラスのURLを
フルパスで入れて対処しました。

0015デフォルトの名無しさんNGNG
>>14
フルパスで入れてOKならいいけど、どこを指定してもダメな場合がある。
大概の場合、これでエラーが出ると定義ファイルを疑った方がよさそう。

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

最初、作成したクラスをJavaのimportみたいなことで定義するには
どうやればよいのか調べたのですが、結局見つからずにフルパスでやったのでした。
0017デフォルトの名無しさんNGNG
ver0.5.3と0.6.0でクラス名が変わっているけど、
dori.jasper.engine ⇒ net.sf.jasperreports.engine 等

iReportやその他サンプルによって利用しているverがまちまちだったりする
ので注意。
0018デフォルトの名無しさんNGNG
そうそう・・・
変わったんだよね。
0.6.0にしたとたん動かなくなったのでびっくりした。
なぜ変えたんだろ。

意味は分からないけどdoriよりnetの方がカッコいいから?
0019デフォルトの名無しさんNGNG
sourceforgeで管理始めたから?
それにしても、sourceforgeつかったらnet.sfっていうパッケージ名が使えて便利だね。
0020デフォルトの名無しさんNGNG
はじめまして、

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

ご教授。
0021デフォルトの名無しさんNGNG
>>20
そういうケースは知らないけど、
インプットがDBでなくXMLであるのなら、
JRXmlDataSourceを使ってみては如何?
0022デフォルトの名無しさんNGNG
>>20
XMLデータのレポートはやったことがないし、
いまのところニーズもないけど、
JasperReportsのソースをダウンロードして
\demo\samples\xmldatasource
を参考にしたらよろしいかと・・・。
0023デフォルトの名無しさんNGNG
>>20
fop
0024デフォルトの名無しさんNGNG
iReportの使い勝手ってどうよ?

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

おれだけ?
0025デフォルトの名無しさんNGNG
>>24
俺も俺も!
自動生成系の奴は元のコメント残してくれるだけでもありがたいんだけどなぁっていつも思う
0026デフォルトの名無しさんNGNG
A4横のPDFをservletから直接プリンタへ出力すると
縦で印刷されたかのように右側が切れて印刷されるんだけど
誰か教えて!!

PDFそのものはアップロードさせて見てみたけど問題ないのです。
0027デフォルトの名無しさんNGNG
>>26
むしろ、プリンターの設定の問題じゃないの?
0028デフォルトの名無しさんNGNG
>>27
プリンタの設定は確認してないけど
PDFファイルに落としてAcrobatReaderで開いて
普通に印刷すると問題ないのです。はい。
002926NGNG
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
■ このスレッドは過去ログ倉庫に格納されています