2011-08-16 22 views
1

JXL APIを使用してExcelファイルに画像を追加します。使用ライブラリ:
jcommon(1.0.14)
はJFreeChart(1.0.13)
JXL(2.6.10)JXLを通じてExcelに追加すると画像がぼやけます

// chartImage is of type BufferedImage 
com.KeyPoint.PngEncoder encoder = new com.KeyPoint.PngEncoder(chartImage, true, 0, 0); 
jxl.write.WritableImage image = new jxl.write.WritableImage(0, 2, (chartImage.getWidth()/100),16, 
encoder.pngEncode()); 
sheet.addImage(image); 

問題がWritableImageコンストラクタは、行の面で幅と高さを取ることで、列(幅:列0から列chartImage.getWidth()/ 100、高さ:行2から行16)。これにより、チャート画像がぼやけます。
JXLを使用して元の画像をExcelに取り込むにはどうすればよいですか?親切に助けてください。ありがとう! :-)

答えて

1

問題は、Excelで使用された圧縮または使用したエンコーダのいずれかにあります。

解決策は、意図したイメージより大きなグラフを描画してから、Excelにダウンスケーリングを実行させることです。これにより、グラフが埋め込まれたワークブックは以前よりもはるかに大きくなりますが、明確になります。

AFAIKは問題の唯一の解決策です。私はWordとPowerPointで同様の問題を抱えていますが、その解決策は拡大しているようです。

グラフを拡大/縮小するときは、フォントサイズも変更する必要があることに注意してください。

+0

+1元の画像が保持されているのを忘れてしまった。 – trashgod

+0

鮮やかでシンプルなソリューションJes ...私のために働いた..ありがとう! :) –

1

PngEncoderを直接使用しないでください。代わりに、関連するChartUtilitiesメソッドを使用してください。利用可能な場合は、Sun/Oracle PNGエンコーダがあります。

+0

ありがとうございましたtrashgod ..も無駄でした:( –

+0

'JFreeChart'と' JXL'を絞り込むことができますか? – trashgod

+0

Im申し訳ありませんが、私はそれを理解できませんでした。 WritableImageクラスは、イメージの幅と高さをそれぞれ数値の列と行で指定しなければならないと考えています。画像が鮮明になりません(グラフであることは非常にはっきりしているはずです)。 –

関連する問題