通过JXL添加到Excel时图像变得模糊

时间:2011-08-16 12:08:10

标签: image jfreechart blur jxl

我使用JXL API将图像添加到Excel文件中。使用的库:
jcommon(1.0.14)
jfreechart(1.0.13)
jxl(2.6.10)

// 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?请帮助。谢谢! : - )

2 个答案:

答案 0 :(得分:1)

请勿直接使用PngEncoder。相反,请使用相关的ChartUtilities方法,如果可用,将找到Sun / Oracle PNG编码器。

答案 1 :(得分:1)

问题在于Excel中使用的压缩或您使用的编码器。

有效的解决方案是绘制比预期图像大的图表,然后让Excel执行缩小。这确保了清晰度,尽管填充图表的工作簿将比以前大得多。

AFAIK是解决问题的唯一方法。我在使用Word和PowerPoint时遇到过类似的问题,解决方案似乎也在升级。

缩放图表时,您应注意字体大小也需要更改。