然后是运行之后的截图:
六、独立性与易集成性
前面可能把整个过程讲述的很复杂,其实,在整个建立与输出报表过程中,是一气呵成的。iReport与JasperReport是紧密相关的,而除此之
外,它们的独立性非常好。
利用jasperReport+iReport生成并输出报表,可以方便的嵌入“胖客户端”以及WEB工程,以项目为例。
此项目是基于Struts结构的,浏览器端的请求是通过ActionServlet来传递的,依照项目要求,我们只要把已经做好的
jasperReport实例导入到项目里即可。导入方法可参考如下:
首先,把相关jar包导入到工程的lib文件夹下,搭建必需的环境;
其次,新建Action类,并将其对应的路径等相关信息加入xml配置文件中;
然后,如同输出html文件一样,将输出代码拷贝到Action类中,实现流的输出即可;
最后,将原实例中的相关处理类拷贝到项目中,调整包的路径,使之正常运作即可。
这时,只要修改某些页面的链接即可完成报表的输出。
七、其他相关问题
如何使用图片?
很容易,用Image控件就可以了. 在Image Express
里面可以用String来表示图片的路径, 或者用InputStream, File 对象.不过不管用File 还是String 对象,都不得不用绝对路径,
这显然很不灵活.解决办法是,穿入一个$P 的参数,表示图片所在的目录,然后用$P 和文件名拼接出完整的绝对路径.或者通过代码来控制,
比如System.getProperty('user.dir')+'\\report.jpg'就表示图片的绝对路径。更好的方法是用InputStream,
例如his.getClass().getResourceAsStream ('report.jpg'),这时只要把图片放在当前.jasper所在的
目录就可以了,不必考虑什么参数,什么路径。
动态控制某些Field 是否显示
每个Static Text, Text Field
甚至整个Band 的属性里面都有Print When Expression, 比如设成new
boolean(!$P{isDisplay}.equalsIgnoreCase('yes')),那么只有当参数display的值为yes 的时候才显示。
使用Sub Report, 如何使用相对路径
和使用图片类似,最好使用InputStream 或者传入参数。
Query里面如何使用参数
$P!{xxx} 或者 $P{xxx} 后者只能用于类似PreparedStatement参数绑定, 而前者可替换Sql的任意部分.
在需要动态排序的时候, 前者特别有用. 比如select a,b,c from t order by $P!{orderClause}不管用$P 还是$P!,
SQL最终是以PreparedStatement 方式执行的, 不必太担心性能问题 注意:参数是不能嵌套的,比如$P{a}=''$P{b}'' ,
$P{b}=''value'', 不要指望$P{a}能被替换成''value''
如何使用图表(Graph)
JasperReport
本身没有图表功能, 只有显示Image 的功能,iReport 里有个Graph 向导, 其实质是通过jFreeChart生成Image. 另外,
更直接的做法是放一个Image控件, Image Express Class 设置成java.awt.Image, 在ImageExpression
里通过自定义的类返回java.awt.Image对象.
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-26308-5.html
说得好