[無料でラクラクJava帳票作成] JasperReports使い集合
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGそれなりの帳票ツールがないとテンテコ舞。
でも、帳票ツールは高い。
せっかくJavaとかTomcatとか無料で開発・運用できる環境があるのに
帳票も作りも無料でやりたいもんだ。
そんな救世主JasperReportsについて朝まで語り合いましょう。
http://jasperreports.sourceforge.net/
デザインツールiReportやJasperAssistantがなければ
ラクラクにはなりませんのでその話題も・・・。
http://ireport.sourceforge.net/
http://www.jasperassistant.com/index.html
1げっと。
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ファイルを読み込む
必要があるってことなんですか?
メモリ上に持ってきたインスタンスを使いまわせればいいんですがね〜
0092デフォルトの名無しさん
2005/06/09(木) 10:11:56Jasperは最終的にはインスタンス化しますが、インスタンスにする前に
インスタンスのクラスを作らなければなりませんよね。
クラスを作るにはレイアウト(jrxml)からコンパイルされるということです。
>どっちにしろWebでやる場合、リクエスト毎にjasperファイルを読み込む
>必要があるってことなんですか?
です。
jasperを読み込むのとjrxmlを読み込んでコンパイルするのとでは
前者のほうが明らかにパフォーマンスで勝るのは理解できると思います。
0093デフォルトの名無しさん
2005/06/09(木) 10:26:50>メモリ上に持ってきたインスタンスを使いまわせればいいんですがね〜
使いまわすかどうかは考え方次第。
消費メモリを気にしないのであれば、常駐化すればいいし
そうでなければ毎回Jasperファイルを読めばいいし、
というところでしょう。
少なくとも私の環境では毎回Jasperファイルを読んでも体感的には
変らないのでメンテナンスの楽な後者の方法を選択しました。
009486
2005/06/11(土) 09:41:20サンクスです。
jrxmlからJasperReportのサブクラスを作ってインスタンスをって流れですかね?
とりあえず、リクエスト毎にjasperファイルを読み込む方向で進めてみます。
さらに質問なんですが、jasperファイルを読み込むところは排他取らなくも
大丈夫ですか?
もし必要になるなら並行度上げる小細工を考える必要あるなって思いまして。
0095デフォルトの名無しさん
2005/06/13(月) 12:21:370096デフォルトの名無しさん
2005/06/13(月) 12:22:22Youがどのようなタイミングでやるかは解らないけど、
jasper(JasperReport)をスタック上に展開すれば問題ないはず
0097デフォルトの名無しさん
2005/06/13(月) 21:32:26JasperReport死亡かも
Eclipse Foundation,レポーティング・ツール「BIRT 1.0」を発表
ttp://itpro.nikkeibp.co.jp/free/ITPro/USNEWS/20050608/162307/
だれか試して!
0098デフォルトの名無しさん
2005/06/17(金) 06:52:47OpenFunXion for iText
ttp://www2.nobworks.co.jp/nobworks/productsTop.html
0099デフォルトの名無しさん
2005/07/27(水) 13:12:540100デフォルトの名無しさん
2005/07/27(水) 13:13:59ひさびさに使ってみたが、少し使いやすくなっていたかも。
0101デフォルトの名無しさん
2005/09/09(金) 12:03:44バーコードの高さ調整、オレも知りたい。
0102デフォルトの名無しさん
2005/09/09(金) 12:07:080103デフォルトの名無しさん
2005/09/13(火) 13:04:02指定された描画位置よりも若干上からレンダリングするようにすれば
見かけ上高さが調整されたようになる。対処療法的だけど。
0104デフォルトの名無しさん
2005/09/15(木) 18:34:200105デフォルトの名無しさん
2005/09/15(木) 18:43:390106デフォルトの名無しさん
2005/09/15(木) 20:38:35一定割合に収まってさえいれば
高かろうが低かろうが、単位幅がどれだけであろうが
全然かまわないという認識で合ってる?
(リーダーの性能とかは度外視して。)
0107デフォルトの名無しさん
2005/09/15(木) 23:12:100108デフォルトの名無しさん
2005/09/21(水) 14:46:34改ページの設定の仕方がわかりません。
例えばIDという項目があって
ID=1が15件
ID=2が5件
とあった場合
1ページに10件表示可能として、
2ページ目の5件まで表示したらID2は3ページ目に表示するという感じにしたいと思っています
これにはどうのような設定をしたらいいかわかる方いましたらご教授お願い致します。
0109デフォルトの名無しさん
2005/09/22(木) 09:03:40example 下に例題プロジェクトがあるから
それ試してみたらどうでしょう?
0110デフォルトの名無しさん
2005/09/22(木) 11:03:15group でできる。isStartNewPage を true にすればOK。
http://jasperreports.sourceforge.net/reference/indexel.html#group
0111108
2005/09/22(木) 17:21:53groupを使用して作成することができました。
ありがとうございました。
>>109
ご質問なのですが、exampleの下とはどこを指しているのでしょうか?
私の使ってるiReportのフォルダ内にはありませんでした
iReportは日本語の資料が少なくて結構大変ですね・・・
0112デフォルトの名無しさん
2005/09/22(木) 23:33:050113デフォルトの名無しさん
2005/09/23(金) 23:11:350114デフォルトの名無しさん
2005/09/24(土) 02:18:15ちゃんとしたリーダなら、
資料読んでフリーハンドで適当に書いたのでも
ある程度読めるからな。
0116デフォルトの名無しさん
2005/09/26(月) 21:27:18JasperReports では直接サポートせずに
Barbecue で云々しちゃってるのは何でだろう?
0117デフォルトの名無しさん
2005/09/29(木) 16:01:50これを出さないようにするにはどこを設定したらよろしいのでしょうか?
whenNoDataType="NoPages"
辺りだと思うのですが、うまくいかないので、
わかる方おられましたら、ご教授お願い致します。
0118デフォルトの名無しさん
2005/09/30(金) 16:28:37-------------------
$hoge
ここら辺に余白
-------------------
こんな感じになってると、$hoge がないにも関わらず
余白を出力するために、白紙がザックリ出力されますよ。
一応確認してみはいかがでしょう?
0119デフォルトの名無しさん
2005/10/03(月) 18:15:580120デフォルトの名無しさん
2005/10/03(月) 21:12:46適切なスレもないようだし
聞くだけ聞いてもいいんじゃないでしょうか。
あるいはPDF変換関連のスレを立てたら
需要があるかどうかをくだ質あたりで探りを入れてみるとか。
0121117
2005/10/05(水) 11:41:53返答ありがとうございます
1つずつ要素を調べていったところ
意味のない要素が操作ミスか何かでほかの要素と重なってたのが原因で
白紙が出てたようです。
たぶん気づかない間にペーストとかやってたのかな・・・
0122デフォルトの名無しさん
2005/11/01(火) 20:12:46これってJava系のプロジェクトとしては実はすごいことだよなあ・・・。
0123デフォルトの名無しさん
2005/11/20(日) 21:45:050124デフォルトの名無しさん
2005/11/29(火) 22:19:14公式サイトのFAQより
Q. DETAIL バンドの高さがページの高さを超えると、意図どおりに表示されない件について
A. DETAIL バンドの仕様で、高さチェックをしててどうしてもそうなる。
回避する方法は以下のとおり。
1. 複数のグループを作成し、DETAILバンドの中身を適宜そちらへ振り分ける。
2. 1.で作成したグループ全てに対して
<groupExpression>$V{REPORT_COUNT}</groupExpression>
を指定する。
3. 以上により1.で作成したグループが一つのカラムのように振るまう。
4. GROUPに対しては高さチェックは働かないため、上記の問題が消える。
ついさっきまでハマってた。しかも二ヶ月前に通った道だった。
0125デフォルトの名無しさん
2005/11/29(火) 22:21:010126デフォルトの名無しさん
2005/11/30(水) 23:40:08だねえ。前から違和感を覚えてた。
0127デフォルトの名無しさん
2005/12/02(金) 03:07:4511位になっていた。
0128デフォルトの名無しさん
2005/12/06(火) 20:34:23空白行を出力することはできないですか?
例えば5行出力したいとして、2行分の動的データが
存在する場合、残りの3行は空白レコード表示とか・・・
0129デフォルトの名無しさん
2005/12/07(水) 00:40:39いまいちよくわからないんだけど、次のうちのどれ?
(1) 各ページに5行出力したいが、2行の場合も残りを空白にしたい
(2) 各ページで2行出力して3行あけたい
(3) その他
0130128
2005/12/07(水) 01:20:15(1) です。
0131デフォルトの名無しさん
2005/12/07(水) 21:33:53普通空白にならんの?
jasperReports要素のisFloatColumnFooter属性がtrueになっているとか?
0132128
2005/12/08(木) 02:04:19空白というよりも空白行(空行?)にしたいんですよね
線は出つつも中の各項目は空という状態です。
下のようなイメージ
┌−−−−−−−−−−−−−−−−−−┐
|No |商品 |金額 |
├−−┼−−−−−−−−−┼−−−−−┤
| 1 |ああああ | 100|
├−−┼−−−−−−−−−┼−−−−−┤
| 2 |いいいい | 200|
├−−┼−−−−−−−−−┼−−−−−┤
| | | |
├−−┼−−−−−−−−−┼−−−−−┤
| | | |
├−−┼−−−−−−−−−┼−−−−−┤
| | | |
├−−┴−−−−−−−−−┼−−−−−┤
| 合計| 300|
└−−−−−−−−−−−−┴−−−−−┘
0133デフォルトの名無しさん
2005/12/08(木) 13:51:32それ以外のやり方があったらボクにも教えて。
0134デフォルトの名無しさん
2005/12/09(金) 01:06:24うわっ・・・そういうことかい。
難儀なことを言うなあw
最初から、線を引いておけばいいんじゃないの?
0135デフォルトの名無しさん
2005/12/09(金) 12:28:12DataSource 作成する時に、5の剰余分だけ
コレクションに空の Bean を追加する。
「空データも表示する」という業務要求だと思えば自然な処理。
策2: 罫線は Background Band で記述する
用紙に手入力するイメージに近くなる気がする。
策2はデザインが面倒なので
(高さや幅変えたくなった時に編集箇所が分散してる)
策1をお勧めするけど。
0136128
2005/12/09(金) 14:35:43やっぱり策1の方法になっちゃいますか。
最初にその方法を考えたけど、もしかすると設定で
実現出来るのかなぁと思ったんで・・・
策1でやってみます。
0137デフォルトの名無しさん
2005/12/09(金) 21:03:030138デフォルトの名無しさん
2005/12/23(金) 15:11:15JasperReportsに戻りたいです。
0139デフォルトの名無しさん
2006/01/30(月) 23:21:32これを回避するためにsubreportのサイズを固定にすることってできますでしょうか?
0140デフォルトの名無しさん
2006/01/31(火) 15:06:41今ひとつ状況が分からず。
p1
| 他
| サブレポ
| サブレポ
| 他
p2
| 他
| サブレポ
| サブレポ
| 他
となって欲しいのに
p1
| 他
| サブレポ
| サブレポ
| サブレポ
p2
| サブレポ
| サブレポ
| 他
となることを言ってる?
0141139
2006/02/01(水) 00:28:36|他1
|サブレポ1
|他2
|サブレポ2
-----------------
のようになって欲しいのですが
サブレポ1のデータの量が多いと
----------------- detail
|他
|サブレポ1
|サブレポ1
|サブレポ1
-----------------
のようになってしまって
他2とサブレポ2がサブレポ1の下に隠れてしまいます。
0142デフォルトの名無しさん
2006/02/07(火) 12:39:001. 他1グループ、サブレポ1グループ、他2グループ、サブレポ2グループを作成する。
2. 他1グループの Header バンドに他1を貼り付ける。サブレポ1グループの Header バンドに(以下略)
3. Detail バンドは使用しない。
でやってみてはどうでしょうか。
詳しくは >>124 や ↓を参照。
ttp://jasperreports.sourceforge.net/tips.tricks.html#largebands
0143デフォルトの名無しさん
2006/02/09(木) 13:29:34動的にセルを結合して表示する方法を
知っている人いませんか?
●DB
--------------------------
| 販売NO | 商品名 | 価格 |
|-------------------------
| 000001 | XPC | 500|
|-------------------------
| 000002 | XPC | 600|
--------------------------
↓
●帳票
--------------------------
| 販売NO | 商品名 | 価格 |
|-------------------------
| 000001 | | 500|
|--------- XPC --------
| 000002 | | 600|
--------------------------
条件としては
・重複しているセルを結合する。
・重複行数は可変で2行とはかぎらない。
・中央揃えで表示したい。
jasperreportで無理でしょうか?
0144デフォルトの名無しさん
2006/02/15(水) 12:06:24恐らく無理。
データの持ち方を相当工夫したら結合は可能だろうけど
(上セル、下セルの値を持たせて、枠線あり・なしのセルを条件により描画する)
それにしても中央揃えとかまでは無理だと思う。
0145デフォルトの名無しさん
2006/03/15(水) 09:53:25ダウンロードしてみたのですがメニューがすべて□□□で読ませんでした。
見当つけてツールのオプションを選択しプロパティのLANGAGEを一番下が
英語だろうと見当をつけて選択したら、メニューは英語で表示されたのですが、
まだプロバティ内には□文字が残ります。0.5.1でLANGAGE日本語で使用していた
ので日本語にしたいところなのですが、対処方法をご存知の方がいましたら
教えて下さい。
■ このスレッドは過去ログ倉庫に格納されています