-
プログラム
-
[無料でラクラクJava帳票作成] JasperReports使い集合
-
UPLIFTで広告なしで体験しましょう!快適な閲覧ライフをお約束します!
JAVAで帳票作成するとなると
それなりの帳票ツールがないとテンテコ舞。
でも、帳票ツールは高い。
せっかくJavaとかTomcatとか無料で開発・運用できる環境があるのに
帳票も作りも無料でやりたいもんだ。
そんな救世主JasperReportsについて朝まで語り合いましょう。
http://jasperreports.sourceforge.net/
デザインツールiReportやJasperAssistantがなければ
ラクラクにはなりませんのでその話題も・・・。
http://ireport.sourceforge.net/
http://www.jasperass...stant.com/index.html
1げっと。
- コメントを投稿する
-
ほほう、よさげですな。
マツリバイト文字とか大丈夫なのかな?
2グッシ
-
マルチバイトの間違い。。。
鬱age -
横浜ベイキットやクリスタルレポートの帳票作成ツールとくらべどうなんだ?
-
>2
だいじょうぶだよ。 -
実際に使っている者だが
全角英字を項目名として使うとうまくないようだ。
DBと連携して帳票を出す際にテーブルの項目名が
全角英字だとそのままでは使えないのでSELECTの記述で
項目名に別名をつければいいよ。 -
おお、参考になるじゃねえか
-
JasperAssistantよさげだね。
でもフリーじゃないのね? -
NuLabって会社が、JasperReportに関するPDF資料を公開してたんだけど、
サイトが落ちてるな。。。
ググったページ(PDF)のキャッシュのHTML版。
http://216.239.57.10...%22&hl=en&lr=lang_ja
画像全滅か。。。
元リンクは、これ。今はつながらない。
http://www.nulab.co....01-jasperreports.pdf
-
ソースの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にて確認。 -
XMLファイルからjasperファイルにコンパイルする時にクラスファイルがないと
言われる場合は、中間でコンパイルに使うJavaファイルのどこかがおかしい。
XMLファイルのクラス指定あたりをチェックしてみるとよいかも。 -
複雑なレポートを作るのには本当に疲れた。
いくつもサブレポートを作って、更にその中にサブレポートがあったり、
グループがいっぱいあったり・・・。 -
>>12
XMLファイルの中にクラス指定って
Javaでいうimportみたいなことですか?
自分もコンパイルで「クラスが見つからないエラー」が出たとき
クラス指定のやり方が解からず、結局はクラスのURLを
フルパスで入れて対処しました。
-
>>15
>典型的なのは<textFieldExpression>
>class属性のデフォルトはjava.lang.Stringなので、Integer型の変数とかを表示する際に
>class属性を指定しないと、>>12で上げたようなエラーになる。
なるほど、そうゆうことですね。
自分の場合は、DBから取得したデータ(コード)を画面に表示する際に
コードに対応した日本語表現に変換するクラスを作成したしたのですが
そのクラスを印刷するときにも流用させようと思って試行錯誤しました。
最初、作成したクラスをJavaのimportみたいなことで定義するには
どうやればよいのか調べたのですが、結局見つからずにフルパスでやったのでした。
-
ver0.5.3と0.6.0でクラス名が変わっているけど、
dori.jasper.engine ⇒ net.sf.jasperreports.engine 等
iReportやその他サンプルによって利用しているverがまちまちだったりする
ので注意。
-
そうそう・・・
変わったんだよね。
0.6.0にしたとたん動かなくなったのでびっくりした。
なぜ変えたんだろ。
意味は分からないけどdoriよりnetの方がカッコいいから? -
sourceforgeで管理始めたから?
それにしても、sourceforgeつかったらnet.sfっていうパッケージ名が使えて便利だね。 -
はじめまして、
JavaでPDF帳票をつくりたいですが、サイトでいくら調べてて、
iReportとJasperReports組み合わせるほうがいちばんよいらしいです。
サンプルにみるとほとんど DBと接続して帳票がつくるものですが。
XML電文式のデータで帳票をつくったケースがありますか。
ご教授。 -
>>20
XMLデータのレポートはやったことがないし、
いまのところニーズもないけど、
JasperReportsのソースをダウンロードして
\demo\samples\xmldatasource
を参考にしたらよろしいかと・・・。 -
>>20
fop -
iReportの使い勝手ってどうよ?
位置合わせが難しいわ、
XMLにコメントとか細かい設定をしても、iReportで更新したらおじゃんになるわで、
結局XMLをEclipseプラグインのX-Menでシコシコ書いているわけですが・・・
おれだけ? -
A4横のPDFをservletから直接プリンタへ出力すると
縦で印刷されたかのように右側が切れて印刷されるんだけど
誰か教えて!!
PDFそのものはアップロードさせて見てみたけど問題ないのです。 -
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
-
Linuxサーバで帳票作るとき、フォントは何指定するの?
MS明朝?
-
-
AcrobatReaderで開いてから印刷したものと
JasperReportsを使って直接プリンタに印刷したものとでは
直接印刷したほうがちょっと拡大されてででくるよね。
それっておれだけ?
-
単純に縮小して印刷になってない?
-
>>34
特に縮小拡大の指定はしていないんですが、
印刷するアプリケーションが違うので多少の誤差は
あるとは思うけど・・・。
逆にチョット縮小させて出したいので縮小拡大の方法を
ご存知でしたらご存知でしたら教えてー。 -
縮小のやり方はJasperReportsを改造することで可能になったけど
オレの勘違いでAcrobatReaderで印刷するときに縮小印刷に
なっていた。(default?)
JasperReportsで出た大きさが正解ってことでした。
>>34
そのことを言いたかったのか・・・ -
サブレポートってどうやって作るんですか?
-
>>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 を使用しています。
御教授お願いします。 -
>>39
2ヶ月も前のレスにレスするのも何だけど・・・
XMLファイル内のJavaコードの記述に誤りがあるのではないかと。
要はサブレポートのjasperファイル(クラスファイルみたいなもの)が
コンパイルエラーで出来ていないということです。 -
iReport-0.4.1 上では日本語を表示できていたが、
アプリでPDFとしてエクスポートする機能を
使用したときに日本語を表示できない。
http://www.moriwaki....ex.php?JasperReports
の「外部フォントを使用しない日本語表示」を参考に
iTextAsian.jar追加し、レポートのフィールドのプロパティを
変更してから実行すると日本語が表示できた。
日本語PDFを扱うのに iTextAsian.jar って必要なの?
iReport付属のライブラリだけではできないのかな?
やり方がおかしいのかな? -
>>41
必要だと聞いている。 -
1000ページぐらいあるレポート作成できる?
-
iReportで合計行を明細のすぐ下に出すにはどうしたらいいんですか?
どうしても合計行だけが離れて紙の一番下にへばりついてしまうんですけど。
a 100
b 200
c 300
計 600
-
>>45
レポート定義のXMLはどうなっているの? -
補足。
例えば、jasperReport要素のisFloatColumnFooter属性にtrueを設定するといいかも。 -
>>46,47
iReport上からは変えられないんですか?
って見てみると、iReportのプロジェクトのオプションのところで
Floating column footerにチェックを入れると一番下だったのが
a,b,cから3行ぐらい開けた下あたりに表示されました。
フローティングしたいわけではなくて、a,b,cのすぐ下に出したいんですけど。
普通の帳票でよくある様に。 -
>>49
やっぱり分からない。
iReportで、detailのところでテキストフィールド1つおいて、detailの幅をそのテキストフィールドの高さにぴったりと合わせてます。
ボーダーつけて表示すると、データが5件あったら5つ箱が重なったみたいに表示されます。
ここまでは問題なし。
columnFooterもテキストフィールド1つおいて同様に、高さを上下の隙間無くぴったりと合わせてます。
すると5つの箱が重なったその下に2,3行分ぐらいの隙間をあけてぽつーんと1つ四角の箱が表示されます。
6つの重なった箱にしたいだけなのに、なんか設定が足りないんですかね。
設定する箇所もそんなにないんですけど。 -
日本語を含むレポートをJRHtmlExporterでエクスポートしたけど
日本語が文字化けしてしまいます。
日本語を扱うための追加処理が必要なんでしょうか?
ちなみに、JasperExportManager#exportReportToPdf を
使用したPDFへのエクスポートでは、正しく日本語が出ています。 -
JSP で contentType の指定が抜けていました。。。
逝ってきます。 -
オレiTextAsian.jarツカッテナイ
デモ、ニホンゴヒョウジデキタ
Windowsノフォントシカツカッテナイカラ?
-
>>53
iReport で、テキストフィールドの Font の設定のところの
Report font、Font name、 PDF font name、TrueType font、
PDF Encoding は何を指定しているの? -
http://www.aware.jp/pdf/jasper_jp.html
で、JasperReportsでフォントを埋め込まない日本語PDFを
生成する方法はわかるんだけど、
フォントを埋め込んで日本語PDFを生成するにはどうすればいいの? -
iReport 0.4.1 ってメニューを日本語で表示でけたのね。。。。
-
でもメニューだけって感じで中途半端だよね。
-
iReport で
SELECT * FROM TABLENAME WHERE KEY = :variable
ようなバインド変数を使ったSQLを使用してレポート作ることができますか? -
iReport でパラメータの追加/修正のところの
Is for prompting ってなんなの?
チェック入れてもはずしても効果がないんだけど。
てっきり、パラメータを入力するダイアログかなんかが
出てくると思ったんだけど。 -
iReport でレポートSQLクエリを複数入力したいんですけど、
無理ですか? -
金額表示を3桁カンマ区切りで表示したいんだけど、
どうすればいいのかな?
-
>>61
テキストフィールドのプロパティでパターンを指定する。 -
>>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"/>
-
>>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 -
>>62
できました。パターンをいろいろ指定できるんですね。
パターンを指定するところでCurrencyという¥#,##0.00の
パターンを選んだときにフォントを日本語にしないと
円マークってでないんですね。全角だから?
気付くのに時間がかかった。。。
-
>>67
日本以外で円マークを使っている国はあるのか? -
円を取引していれば国に関係なく使うんじゃ?
-
iReport で縦書きのフィールドを作成できるのでしょうか?
改行いれながら調整するしかないんでしょうか?
-
iReport 0.4.1 でパワーポイントのテキストのように
「テキストにあわせて描画オブジェクトのサイズを調整する」
ようなことってできますか?
ぽちぽちっと適度なサイズに変更したいんですけど。
-
iReport で枠を書くのって、バンド毎に縦線を引かなきゃ
いけないんでしょうか?次のようなレポートだと、縦線が
6本必要になりますよね?もっとうまいやり方があるんでしょうか?
|氏名 |年齢|
−−−−−−−−−
|$F{name}|$F{age}|
-
>67, 69
円マークは使わないよ。
JPYとかが一般的じゃない?
アメリカドルならUSDとか。 -
iReport でバーコードを使えるみたいなんですけど、
これって実用レベルに達しているのでしょうか?
それと、プロパティのBarcode expressionってStringで表現
しないとコンパイルが通らないです。でも、ダブルクオートで
表現したいコードを囲むと、iReport上のバーコードオブジェクトが
Barcode Errorで表示されてしまう。う〜ん。 -
それと、バーコードの高さが半端なんだけど、
調整できないのかな? -
>>65
複数クエリは無理なんですか。。。
メインで扱うデータを取得するSQLはレポートSQLクエリに、
それ以外のデータは、パラメータ化してレポートに渡すか、
サブレポートで、というのがお作法なんでしょうか。
レポートに複数SQLを埋め込めたほうが、SQLがまとまって
いいような気もするけど。
-
>>78
作法というか
おかれている環境、状況で工夫するしかないと思います。
複数SQLを埋め込める帳票ツールがあってそれを導入することが
できるのならそれを用いればよいし。。。
メインのデータとそれ以外のデータに結合点があればJOINすればいいし
そうでなければストアドなどで無理やり1つのResultSetを作り出せば
いいんじゃないかと。 -
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'
(エラーメッセージって日本語で出力されてたから
□□□になってたんですね。。。) -
>20 さんは XML Datasource を問題なく使えたのかなぁ。。。
-
iReportで作ったXMLを
PHPでPDF出力するようなソリューションってころがってないかにゃー。 -
>>83
お、それいただき! -
iReport 0.5.0 release!!
-
JasperReportsをWeb(Struts)で使って、PDFを出力しようとしています。
XMLからJasperReportインスタンス(空のレポートインスタンス?)
を生成するところで、数秒かかってしまってます。
このインスタンスを再利用できれば、パフォーマンスが上がるかなって思ってます。
再利用は可能でしょうか?
JasperReportインスタンスは一つだけ作っておき、リクエスト毎にJasperPrint
インスタンスを作るって方法です。
要するに、JasperReportインスタンスはスレッドセーフに使えるのでしょうか?
APIやその他ドキュメントを見ても良く分かりませんでした。
宜しくお願いします。
-
jrxml → jasper のコンパイルが遅いということを言っているなら、
コンパイル済みjasper ファイルを実行時に読み込んでバインド→PDF出力、ということを、
サンプルの JasperPrintServlet.java でやってる。 -
>>87
サンクスです。
このjasperファイルってJasperReportインスタンスをシリアライズ
したものなんですよね?
ファイルの読み込みってシンクロナイズする必要ありましたっけ?
StrutsのActionはスレッドを意識しないで組みたいなって思ってますので。
自分ももうちょい調べてみます。 -
>>88
Jasperはxml(jrxml)で定義したデザインファイルをJavaバイトコードに
コンパイルしたものだったと記憶してますが、
なのでPDFを出力するたびにアプリケーションでjasperを作り出すのは
どうかと思います。
わてはAntの段階でjasperにしてリリースしてまっせ。
そんためには、jrxml→jasperにするためのツールを
JAVAで作ってAntで実行せにゃいかんね。
-
JasperReportsをWeb(Struts)で使って、PDFを出力しようとしています。
XMLからJasperReportインスタンス(空のレポートインスタンス?)
を生成するところで、数秒かかってしまってます。
このインスタンスを再利用できれば、パフォーマンスが上がるかなって思ってます。
再利用は可能でしょうか?
JasperReportインスタンスは一つだけ作っておき、リクエスト毎にJasperPrint
インスタンスを作るって方法です。
要するに、JasperReportインスタンスはスレッドセーフに使えるのでしょうか?
APIやその他ドキュメントを見ても良く分かりませんでした。
宜しくお願いします。
-
>>89
APIドキュメント見る限りではJasperReportのインスタンスっぽいですが?
JasperCompileManager#compileReportToFile()を見てみてください。
どっちにしろWebでやる場合、リクエスト毎にjasperファイルを読み込む
必要があるってことなんですか?
メモリ上に持ってきたインスタンスを使いまわせればいいんですがね〜 -
>>91
Jasperは最終的にはインスタンス化しますが、インスタンスにする前に
インスタンスのクラスを作らなければなりませんよね。
クラスを作るにはレイアウト(jrxml)からコンパイルされるということです。
>どっちにしろWebでやる場合、リクエスト毎にjasperファイルを読み込む
>必要があるってことなんですか?
です。
jasperを読み込むのとjrxmlを読み込んでコンパイルするのとでは
前者のほうが明らかにパフォーマンスで勝るのは理解できると思います。 -
92だけど補足
>メモリ上に持ってきたインスタンスを使いまわせればいいんですがね〜
使いまわすかどうかは考え方次第。
消費メモリを気にしないのであれば、常駐化すればいいし
そうでなければ毎回Jasperファイルを読めばいいし、
というところでしょう。
少なくとも私の環境では毎回Jasperファイルを読んでも体感的には
変らないのでメンテナンスの楽な後者の方法を選択しました。 -
>>92-93
サンクスです。
jrxmlからJasperReportのサブクラスを作ってインスタンスをって流れですかね?
とりあえず、リクエスト毎にjasperファイルを読み込む方向で進めてみます。
さらに質問なんですが、jasperファイルを読み込むところは排他取らなくも
大丈夫ですか?
もし必要になるなら並行度上げる小細工を考える必要あるなって思いまして。
-
楽々なんてウソ!汗たらたらジャン!
-
JasperReport死亡かも
Eclipse Foundation,レポーティング・ツール「BIRT 1.0」を発表
http://itpro.nikkeib...EWS/20050608/162307/
だれか試して!
-
最近人から聞いたやつけど、Jasperとはどう違うか知ってる人います?
OpenFunXion for iText
http://www2.nobworks...rks/productsTop.html -
1.0.0 リリース記念age
-
ついでに100get
ひさびさに使ってみたが、少し使いやすくなっていたかも。
↑今すぐ読める無料コミック大量配信中!↑