[無料でラクラクJava帳票作成] JasperReports使い集合
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGそれなりの帳票ツールがないとテンテコ舞。
でも、帳票ツールは高い。
せっかくJavaとかTomcatとか無料で開発・運用できる環境があるのに
帳票も作りも無料でやりたいもんだ。
そんな救世主JasperReportsについて朝まで語り合いましょう。
http://jasperreports.sourceforge.net/
デザインツールiReportやJasperAssistantがなければ
ラクラクにはなりませんのでその話題も・・・。
http://ireport.sourceforge.net/
http://www.jasperassistant.com/index.html
1げっと。
0002デフォルトの名無しさん
NGNGマツリバイト文字とか大丈夫なのかな?
2グッシ
00032
NGNG鬱age
0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNGだいじょうぶだよ。
0006デフォルトの名無しさん
NGNG全角英字を項目名として使うとうまくないようだ。
DBと連携して帳票を出す際にテーブルの項目名が
全角英字だとそのままでは使えないのでSELECTの記述で
項目名に別名をつければいいよ。
0007デフォルトの名無しさん
NGNG0008デフォルトの名無しさん
NGNGでもフリーじゃないのね?
0009デフォルトの名無しさん
NGNGサイトが落ちてるな。。。
ググったページ(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
0010JasperReports
NGNGiReportで充分だよ
自分は公開されているiReportに関するPDF資料で
なんとか使えるようになったよ。
0011デフォルトの名無しさん
NGNGの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言われる場合は、中間でコンパイルに使うJavaファイルのどこかがおかしい。
XMLファイルのクラス指定あたりをチェックしてみるとよいかも。
0013デフォルトの名無しさん
NGNGいくつもサブレポートを作って、更にその中にサブレポートがあったり、
グループがいっぱいあったり・・・。
0014デフォルトの名無しさん
NGNGXMLファイルの中にクラス指定って
Javaでいうimportみたいなことですか?
自分もコンパイルで「クラスが見つからないエラー」が出たとき
クラス指定のやり方が解からず、結局はクラスのURLを
フルパスで入れて対処しました。
0015デフォルトの名無しさん
NGNGフルパスで入れてOKならいいけど、どこを指定してもダメな場合がある。
大概の場合、これでエラーが出ると定義ファイルを疑った方がよさそう。
典型的なのは<textFieldExpression>
class属性のデフォルトはjava.lang.Stringなので、Integer型の変数とかを表示する際に
class属性を指定しないと、>>12で上げたようなエラーになる。
0016デフォルトの名無しさん
NGNG>典型的なのは<textFieldExpression>
>class属性のデフォルトはjava.lang.Stringなので、Integer型の変数とかを表示する際に
>class属性を指定しないと、>>12で上げたようなエラーになる。
なるほど、そうゆうことですね。
自分の場合は、DBから取得したデータ(コード)を画面に表示する際に
コードに対応した日本語表現に変換するクラスを作成したしたのですが
そのクラスを印刷するときにも流用させようと思って試行錯誤しました。
最初、作成したクラスをJavaのimportみたいなことで定義するには
どうやればよいのか調べたのですが、結局見つからずにフルパスでやったのでした。
0017デフォルトの名無しさん
NGNGdori.jasper.engine ⇒ net.sf.jasperreports.engine 等
iReportやその他サンプルによって利用しているverがまちまちだったりする
ので注意。
0018デフォルトの名無しさん
NGNG変わったんだよね。
0.6.0にしたとたん動かなくなったのでびっくりした。
なぜ変えたんだろ。
意味は分からないけどdoriよりnetの方がカッコいいから?
0019デフォルトの名無しさん
NGNGそれにしても、sourceforgeつかったらnet.sfっていうパッケージ名が使えて便利だね。
0020デフォルトの名無しさん
NGNGJavaでPDF帳票をつくりたいですが、サイトでいくら調べてて、
iReportとJasperReports組み合わせるほうがいちばんよいらしいです。
サンプルにみるとほとんど DBと接続して帳票がつくるものですが。
XML電文式のデータで帳票をつくったケースがありますか。
ご教授。
0021デフォルトの名無しさん
NGNGそういうケースは知らないけど、
インプットがDBでなくXMLであるのなら、
JRXmlDataSourceを使ってみては如何?
0022デフォルトの名無しさん
NGNGXMLデータのレポートはやったことがないし、
いまのところニーズもないけど、
JasperReportsのソースをダウンロードして
\demo\samples\xmldatasource
を参考にしたらよろしいかと・・・。
0023デフォルトの名無しさん
NGNGfop
0024デフォルトの名無しさん
NGNG位置合わせが難しいわ、
XMLにコメントとか細かい設定をしても、iReportで更新したらおじゃんになるわで、
結局XMLをEclipseプラグインのX-Menでシコシコ書いているわけですが・・・
おれだけ?
0025デフォルトの名無しさん
NGNG俺も俺も!
自動生成系の奴は元のコメント残してくれるだけでもありがたいんだけどなぁっていつも思う
0026デフォルトの名無しさん
NGNG縦で印刷されたかのように右側が切れて印刷されるんだけど
誰か教えて!!
PDFそのものはアップロードさせて見てみたけど問題ないのです。
0027デフォルトの名無しさん
NGNGむしろ、プリンターの設定の問題じゃないの?
0028デフォルトの名無しさん
NGNGプリンタの設定は確認してないけど
PDFファイルに落としてAcrobatReaderで開いて
普通に印刷すると問題ないのです。はい。
002926
NGNG下のようにしたら解決したのでご報告まで(<の部分を追加)
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
0030デフォルトの名無しさん
NGNG乙!
デフォルトは縦になってるのか・・・。
0031デフォルトの名無しさん
NGNGMS明朝?
0032デフォルトの名無しさん
NGNG0033デフォルトの名無しさん
NGNGJasperReportsを使って直接プリンタに印刷したものとでは
直接印刷したほうがちょっと拡大されてででくるよね。
それっておれだけ?
0034デフォルトの名無しさん
NGNG0035デフォルトの名無しさん
NGNG特に縮小拡大の指定はしていないんですが、
印刷するアプリケーションが違うので多少の誤差は
あるとは思うけど・・・。
逆にチョット縮小させて出したいので縮小拡大の方法を
ご存知でしたらご存知でしたら教えてー。
003633,35
NGNGオレの勘違いでAcrobatReaderで印刷するときに縮小印刷に
なっていた。(default?)
JasperReportsで出た大きさが正解ってことでした。
>>34
そのことを言いたかったのか・・・
0037デフォルトの名無しさん
05/01/28 15:37:280038デフォルトの名無しさん
05/01/28 23:32:41・レポートを作る
・そのレポートを別のレポートからsubreport要素を使って呼び出す
ま、サンプルがあると思うから、それを見てみるこった。
0039デフォルトの名無しさん
05/01/31 17:17:49アドバイスに従って、サンプル(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 を使用しています。
御教授お願いします。
0040デフォルトの名無しさん
2005/03/30(水) 20:42:212ヶ月も前のレスにレスするのも何だけど・・・
XMLファイル内のJavaコードの記述に誤りがあるのではないかと。
要はサブレポートのjasperファイル(クラスファイルみたいなもの)が
コンパイルエラーで出来ていないということです。
0041デフォルトの名無しさん
2005/04/27(水) 22:55:21アプリでPDFとしてエクスポートする機能を
使用したときに日本語を表示できない。
ttp://www.moriwaki.net/wiki/index.php?JasperReports
の「外部フォントを使用しない日本語表示」を参考に
iTextAsian.jar追加し、レポートのフィールドのプロパティを
変更してから実行すると日本語が表示できた。
日本語PDFを扱うのに iTextAsian.jar って必要なの?
iReport付属のライブラリだけではできないのかな?
やり方がおかしいのかな?
0042デフォルトの名無しさん
2005/04/29(金) 14:29:16>>41
で、結局出来たのか出来ないのか、どっちなんだ!
0043デフォルトの名無しさん
2005/04/29(金) 21:15:09必要だと聞いている。
0044デフォルトの名無しさん
2005/05/07(土) 01:08:590045デフォルトの名無しさん
2005/05/07(土) 06:40:14どうしても合計行だけが離れて紙の一番下にへばりついてしまうんですけど。
a 100
b 200
c 300
計 600
0046デフォルトの名無しさん
2005/05/07(土) 14:44:26レポート定義のXMLはどうなっているの?
0047デフォルトの名無しさん
2005/05/07(土) 14:48:22例えば、jasperReport要素のisFloatColumnFooter属性にtrueを設定するといいかも。
004845
2005/05/07(土) 17:09:13iReport上からは変えられないんですか?
って見てみると、iReportのプロジェクトのオプションのところで
Floating column footerにチェックを入れると一番下だったのが
a,b,cから3行ぐらい開けた下あたりに表示されました。
フローティングしたいわけではなくて、a,b,cのすぐ下に出したいんですけど。
普通の帳票でよくある様に。
0049デフォルトの名無しさん
2005/05/07(土) 22:08:14すぐ下に出すのがフローティングだと思うのだが。
3行ぐらい空いているのは別の要因だと思うが。
005048
2005/05/08(日) 09:55:05やっぱり分からない。
iReportで、detailのところでテキストフィールド1つおいて、detailの幅をそのテキストフィールドの高さにぴったりと合わせてます。
ボーダーつけて表示すると、データが5件あったら5つ箱が重なったみたいに表示されます。
ここまでは問題なし。
columnFooterもテキストフィールド1つおいて同様に、高さを上下の隙間無くぴったりと合わせてます。
すると5つの箱が重なったその下に2,3行分ぐらいの隙間をあけてぽつーんと1つ四角の箱が表示されます。
6つの重なった箱にしたいだけなのに、なんか設定が足りないんですかね。
設定する箇所もそんなにないんですけど。
0051デフォルトの名無しさん
2005/05/10(火) 21:04:06日本語が文字化けしてしまいます。
日本語を扱うための追加処理が必要なんでしょうか?
ちなみに、JasperExportManager#exportReportToPdf を
使用したPDFへのエクスポートでは、正しく日本語が出ています。
0052デフォルトの名無しさん
2005/05/10(火) 21:36:32逝ってきます。
0053デフォルトの名無しさん
2005/05/11(水) 11:51:09デモ、ニホンゴヒョウジデキタ
Windowsノフォントシカツカッテナイカラ?
0054デフォルトの名無しさん
2005/05/12(木) 01:39:35iReport で、テキストフィールドの Font の設定のところの
Report font、Font name、 PDF font name、TrueType font、
PDF Encoding は何を指定しているの?
0055デフォルトの名無しさん
2005/05/12(木) 01:59:45で、JasperReportsでフォントを埋め込まない日本語PDFを
生成する方法はわかるんだけど、
フォントを埋め込んで日本語PDFを生成するにはどうすればいいの?
0056デフォルトの名無しさん
2005/05/12(木) 02:07:350057デフォルトの名無しさん
2005/05/12(木) 20:30:520058デフォルトの名無しさん
2005/05/12(木) 22:57:32SELECT * FROM TABLENAME WHERE KEY = :variable
ようなバインド変数を使ったSQLを使用してレポート作ることができますか?
0059デフォルトの名無しさん
2005/05/12(木) 23:18:34Is for prompting ってなんなの?
チェック入れてもはずしても効果がないんだけど。
てっきり、パラメータを入力するダイアログかなんかが
出てくると思ったんだけど。
0060デフォルトの名無しさん
2005/05/12(木) 23:57:22無理ですか?
0061デフォルトの名無しさん
2005/05/13(金) 21:28:48どうすればいいのかな?
0062デフォルトの名無しさん
2005/05/13(金) 21:57:44テキストフィールドのプロパティでパターンを指定する。
0063デフォルトの名無しさん
2005/05/16(月) 10:31:37<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"/>
0064デフォルトの名無しさん
2005/05/16(月) 10:35:21できますよぉ〜。
0065デフォルトの名無しさん
2005/05/16(月) 10:38:41無理じゃないかしら。
レイアウトが見えないのでなんともだけど
JOINしてなんとか1クエリにまとめるか
サブレポート化するなどすればなんとかなるかも
0066デフォルトの名無しさん
2005/05/16(月) 13:30:11こんな感じだ
<parameter name="MaxOrderID" class="java.lang.Integer"></parameter>
<queryString><![CDATA[SELECT * FROM Orders WHERE OrderID <= $P{MaxOrderID} ORDER BY ShipCountry]]></queryString>
くわしくはdemoのFirstJasperなんかをLOOK
0067デフォルトの名無しさん
2005/05/16(月) 20:16:06できました。パターンをいろいろ指定できるんですね。
パターンを指定するところでCurrencyという¥#,##0.00の
パターンを選んだときにフォントを日本語にしないと
円マークってでないんですね。全角だから?
気付くのに時間がかかった。。。
0068デフォルトの名無しさん
2005/05/16(月) 20:52:27日本以外で円マークを使っている国はあるのか?
0069デフォルトの名無しさん
2005/05/16(月) 21:18:320070デフォルトの名無しさん
2005/05/16(月) 21:29:29改行いれながら調整するしかないんでしょうか?
0071デフォルトの名無しさん
2005/05/16(月) 21:39:31「テキストにあわせて描画オブジェクトのサイズを調整する」
ようなことってできますか?
ぽちぽちっと適度なサイズに変更したいんですけど。
0072デフォルトの名無しさん
2005/05/16(月) 22:04:09いけないんでしょうか?次のようなレポートだと、縦線が
6本必要になりますよね?もっとうまいやり方があるんでしょうか?
|氏名 |年齢|
−−−−−−−−−
|$F{name}|$F{age}|
0073デフォルトの名無しさん
2005/05/16(月) 23:32:48ワシも知りたい。
>>72
エリアごとに四角を配置してみるとか?
0074デフォルトの名無しさん
2005/05/17(火) 00:40:38円マークは使わないよ。
JPYとかが一般的じゃない?
アメリカドルならUSDとか。
0075デフォルトの名無しさん
2005/05/17(火) 02:16:48これって実用レベルに達しているのでしょうか?
それと、プロパティのBarcode expressionってStringで表現
しないとコンパイルが通らないです。でも、ダブルクオートで
表現したいコードを囲むと、iReport上のバーコードオブジェクトが
Barcode Errorで表示されてしまう。う〜ん。
0076デフォルトの名無しさん
2005/05/17(火) 02:23:36調整できないのかな?
0077デフォルトの名無しさん
2005/05/17(火) 12:19:351行だけなら縦長のフィールドを作成して
自動改行させればできるが、縦文字のフォント
を使わないと長音(ー)とか括弧なんかは変になってしまうよ
0078デフォルトの名無しさん
2005/05/17(火) 22:36:42複数クエリは無理なんですか。。。
メインで扱うデータを取得するSQLはレポートSQLクエリに、
それ以外のデータは、パラメータ化してレポートに渡すか、
サブレポートで、というのがお作法なんでしょうか。
レポートに複数SQLを埋め込めたほうが、SQLがまとまって
いいような気もするけど。
0079デフォルトの名無しさん
2005/05/17(火) 22:57:57できまつた。
それとJava 側からバインド変数へ値を渡すにはHashMapを使うんですね。
また、SQLの条件句自体をパラメータ渡ししたいときは$P!{hogehoge}
ってのが使えるんだね。
0080デフォルトの名無しさん
2005/05/17(火) 23:08:46作法というか
おかれている環境、状況で工夫するしかないと思います。
複数SQLを埋め込める帳票ツールがあってそれを導入することが
できるのならそれを用いればよいし。。。
メインのデータとそれ以外のデータに結合点があればJOINすればいいし
そうでなければストアドなどで無理やり1つのResultSetを作り出せば
いいんじゃないかと。
0081デフォルトの名無しさん
2005/05/17(火) 23:52:157.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'
(エラーメッセージって日本語で出力されてたから
□□□になってたんですね。。。)
0082デフォルトの名無しさん
2005/05/21(土) 22:13:460083デフォルトの名無しさん
2005/05/24(火) 08:45:53PHPでPDF出力するようなソリューションってころがってないかにゃー。
0084デフォルトの名無しさん
2005/05/25(水) 23:53:15お、それいただき!
0085デフォルトの名無しさん
2005/05/26(木) 20:32:390086デフォルトの名無しさん
2005/06/06(月) 21:39:06XMLからJasperReportインスタンス(空のレポートインスタンス?)
を生成するところで、数秒かかってしまってます。
このインスタンスを再利用できれば、パフォーマンスが上がるかなって思ってます。
再利用は可能でしょうか?
JasperReportインスタンスは一つだけ作っておき、リクエスト毎にJasperPrint
インスタンスを作るって方法です。
要するに、JasperReportインスタンスはスレッドセーフに使えるのでしょうか?
APIやその他ドキュメントを見ても良く分かりませんでした。
宜しくお願いします。
0087デフォルトの名無しさん
2005/06/07(火) 00:10:19コンパイル済みjasper ファイルを実行時に読み込んでバインド→PDF出力、ということを、
サンプルの JasperPrintServlet.java でやってる。
008886
2005/06/07(火) 05:42:29サンクスです。
このjasperファイルってJasperReportインスタンスをシリアライズ
したものなんですよね?
ファイルの読み込みってシンクロナイズする必要ありましたっけ?
StrutsのActionはスレッドを意識しないで組みたいなって思ってますので。
自分ももうちょい調べてみます。
0089デフォルトの名無しさん
2005/06/07(火) 14:36:05Jasperはxml(jrxml)で定義したデザインファイルをJavaバイトコードに
コンパイルしたものだったと記憶してますが、
なのでPDFを出力するたびにアプリケーションでjasperを作り出すのは
どうかと思います。
わてはAntの段階でjasperにしてリリースしてまっせ。
そんためには、jrxml→jasperにするためのツールを
JAVAで作ってAntで実行せにゃいかんね。
0090デフォルトの名無しさん
2005/06/07(火) 22:57:35XMLからJasperReportインスタンス(空のレポートインスタンス?)
を生成するところで、数秒かかってしまってます。
このインスタンスを再利用できれば、パフォーマンスが上がるかなって思ってます。
再利用は可能でしょうか?
JasperReportインスタンスは一つだけ作っておき、リクエスト毎にJasperPrint
インスタンスを作るって方法です。
要するに、JasperReportインスタンスはスレッドセーフに使えるのでしょうか?
APIやその他ドキュメントを見ても良く分かりませんでした。
宜しくお願いします。
009186
2005/06/07(火) 23:17:22APIドキュメント見る限りではJasperReportのインスタンスっぽいですが?
JasperCompileManager#compileReportToFile()を見てみてください。
どっちにしろWebでやる場合、リクエスト毎にjasperファイルを読み込む
必要があるってことなんですか?
メモリ上に持ってきたインスタンスを使いまわせればいいんですがね〜
■ このスレッドは過去ログ倉庫に格納されています