質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JasperReports

JasperReportsはオープンソースの帳票生成ツールです。JasperReportはPDF, HTML, Microsoft Excel, ODT, XML等の様々なフォーマットのものをエクスポートします。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

10913閲覧

Jasper Reportsで記号+数値をPDF出力しようとすると、小数点以下が表示されない時がある

退会済みユーザー

退会済みユーザー

総合スコア0

JasperReports

JasperReportsはオープンソースの帳票生成ツールです。JasperReportはPDF, HTML, Microsoft Excel, ODT, XML等の様々なフォーマットのものをエクスポートします。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/03/23 16:19

編集2016/03/23 16:22

###現象
例えば、▼12,345.567 と表示したいのに、▼12,345 と出力され、小数点以下が表示されません。
記号(▼)と小数点(.)が混在し、表示幅に全桁が入らない値で表示した場合だけ発生します。

表示幅に収まっている場合(▼12,345.567)では正しく表示され、
記号と数値だけの場合(▼12,345)、または数値だけの場合(12,345.567)も問題なく表示されます。

###知りたいこと
記号+整数部から表示して入りきるところまで表示を行いたいのですが、方法はありますでしょうか?
ちなみに、文字列連結のドットとして処理した後は、文字型のドットとして処理されないのでしょうか?

###試したこと
PHP側で記号を削除して数値のみにし、

'▼'+$F{HOGE_DATA5}

jrxmlで上記のように記号とフィールド変数の文字列連結を行った場合でも同じ現象が起きましたので、
jasper側の問題かと思っております。

###補足
Eclipse上で作業しております。
PHPでデータ作成処理をし、処理中はJavaで常駐監視し、
jasperファイルへデータを渡してPDFを出力しています。
jasperでの変数は、String型で使用しています。

簡素な情報で恐縮ですが、教えて頂けると助かります。
また、必要な情報があれば開示しますのでお知らせ下さい。
宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ちょうどJasperReportsのJava実装を検証していたので、事象確認してみました。
切り分けのため、PHPでの処理は考えず、Java+JasperReportsのみでの検証です。

Java側からString型で"▼123,456.789"をJasperRepoertsにパラメータとして渡すと問題なく「▼123,456.789」と表示されました。

パラメータ指定部分のソース抜粋です。
JasperReports側では「Title」というパラメータで受けるよう定義しています。

java

1 2// パラメータ作成 3Map<String, Object> parameters = new HashMap<String, Object>(); 4parameters.put("Title", "▼123,456.789"); 5 6// PDFへ出力 7JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource()); 8JasperExportManager.exportReportToPdfFile(jasperPrint, destPath); 9

以下のように切り分けを行い、どの部分に問題があるか確認できますか?
PHPとJavaのどちらかで問題が発生していると思います。

  • Java側で固定パラメータでの表示ができるか(上記サンプルのように)
  • PHPのデータ処理後の値をデバッグして想定している文字列となっているか

検証した環境

  • Java8
  • Eclipse 4.5
  • JapserReports 6.2.1
    • 全角フォントとしてIPAフォントを導入

投稿2016/03/24 04:23

takyafumin

総合スコア2335

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takyafumin

2016/03/24 04:28

すみません、質問を読み違えているかもしれません。 「記号(▼)と小数点(.)が混在し、表示幅に全桁が入らない値で表示した場合」にどのように表示されることを期待していますか? * ▼12,345.567 -> 5.567(末尾から入り切るところまで) * ▼12,345.567 -> ▼12,3(先頭から入り切るところまで)
退会済みユーザー

退会済みユーザー

2016/03/24 06:03 編集

ご回答、検証ありがとうございます。 記号(▼)と小数点(.)が混在し、表示幅に全桁が入らない値で表示した場合には、 * ▼12,345.567 -> ▼12,3(先頭から入り切るところまで) のように表示したいと考えています。 現在の状況だと、 幅が足りている ▼2,345.567 は小数点以下まで全て表示され、 幅が足りていない▼12,345.567 の場合、 ▼12,345 としか表示されない状態です。 この場合だと、▼12,345.56と表示されるのが理想です。
takyafumin

2016/03/24 07:40

回答ありがとうございます。 現象が再現できました。 テキストの高さを大きくすると見切れている部分が改行されていました。 テキスト幅に入りきらない場合、「,」や「.」を区切りとして改行されてしまうようですね。「-」なども同様のようです。 「stretch with overflow」などの設定が関連していそうでしたが「縦に」自動で伸ばすか、という設定でした。 ここで回避策ですが、JasperReportsの設定ではうまく出来そうになかった(調べきれなかった)ため、異なる方向からのアプローチです。少し無理やりですが。 a) 「▼」と数値用テキストを2つ準備して、数値用テキストにパラメータを設定する b) Java側で対象文字列を先頭から切り出してJasperへ渡す Jasper Reports Libraryのマニュアル(英語)をすべて確認できていませんが、全角と半角混じりの場合のケースであるため、考慮されていないかもしれませんね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問