在利用ireport输出报表的时候,有些生僻字无法处理,报的异常为--->数组下标越界
在网上查找了相关资料,没有找到解决办法,实在没辙了,只能使用图片代替了...
步骤:(假设在模板中放入生僻字的是一个static text文本元素)
1.把生僻字用正常的字代替,然后输出报表,导出excel表格
2.在excel表格中把正常的字用原来的生僻字代替,再利用QQ截图,保存为JPG的格式(在excel中截图清晰些,该截图的大小和放入生僻字的static text文本元素的大小有一致)
3.删除放置生僻字的static text元素,并且在static text的位置放入图片元素image,它会弹出一个对话框让你选择图片,选择刚才的QQ截图
4.经过上面三个步骤之后,新的模板就生成好了,接下来看效果,发现改图片可以在PDF预览中正常显示,导出的excel中也能正常显示
5.因为放入的图片是在本地,所以需要把该图片放入到服务器上去,因为我的工程为MAVEN工程,所以把图片和项目放在一起,放置路径为:
java Resource--->src/main/resource--->image--->title.jpg
6.在jrxml模板中使用xml视图,CTRL+F,查找jpg,会找到在模板中放入本地的QQ截图
<imageExpression><![CDATA["C:\\USER\\title.jpg"]]></imageExpression>
把该图片去掉,换成变量名$P{path},修改之后为
<imageExpression><![CDATA[$P{path2}]]></imageExpression>
7.在模板中加入parameter参数:path
8.在java后台放入模板参数,java代码如下:(给模板加入参数的代码可能会有所不同,只要达到给模板添加可识别的参数path就可以了)
String path = "";
if(this.getClass().getClassLoader().getResource("image/title.jpg") != null){
path = this.getClass().getClassLoader().getResource("image/title.jpg").getPath();
};
param.getParameters().put("path",path));
可以在eclipse中DEBUG测试一下,如果path不等于null,表示 能够在项目中能够正确的找到图片,如果为null,则表示图片放错地方了...
9.编译MAVEN工程,测试报表即可