JasperForge.org 是开源门户网站 http://jasperforge.org/
JasperReport 简介
JasperReport 是一款报表打印组件,是开放源代码组织sf.net 中的一个java 报表打印工程,JasperReport 的最新版本可以从http://jasperforge.org/sf/projects/jasperreports 下载得到。JasperReport 适合用来做WEB 应用程序与Java Application 的报表打印组件,而且关键的一点是:JasperReport 是免费的!查看工程代码是最好的学习方法:https://sourceforge.net/project/showfiles.php?group_id=36382
iReport 简介
iReport 也是开源组织sf.net 中的一款免费软件,其主要作用是用来以可视化的方式设计生成JasperReport 所使用的报表格式文件,因为JasperReport 本身并未提供很好的可视化报表设计工具,iReport 的出现正好弥补了这个缺陷。下载iReport请到 http://jasperforge.org/sf/projects/ireport。
报表的配置、基本使用就不在此重述,网上有很多相关资料,没有找到的朋友可以留下E-mail地址.在此主要是记录在开发过程中自己的一些使用心得.
开发WEB应用时要用到的jar包:
· jasperreports-{version}.jar
· commons-beanutils-{version}.jar
· commons-collections-{version}.jar
· commons-digester-{version}.jar
· commons-logging-{version}.jar
· xercesImpl.jar-for parsing XML
· itext-{version}.jar-For creating PDF formatted report
· JDBC driver.
一、中文解决问题:
1.如果使用的是Mysql数据库可以设置:jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=GBK
2.下载支持中文的iTextAsian.jar放至lib目录下 http://prdownloads.sourceforge.net/itext/iTextAsian.jar
二、关于性能问题:
1.增大应用服务器的内存堆栈(例:Tomcat 找到Tomcat\bin目录下的catalina.bat文件加上-Xss20m -Xms256m -Xmx512m参数.
2.优化程序.目前使用最普遍的方式是采用JasperFillManager.fillReport(myRpt, params, conn);的方式直接在内存中填充报表修改后的程序思路是在服务器上生成临时文件后再填充报表主要采用的方法是:
jasperPrint = (JasperPrint) JRLoader.loadObject(JasperFillManager.fillReportToFile(name,params, conn));
JasperExportManager.exportReportToPdfStream(jasperPrint,httpOut);
经测试后采用第二种方法在windows OS下输出10万条记录不会造成内存溢出异常,但也同时有个缺点就是该方法必须以单线程方式运行,否者会出现异常.所以就要求我们必须对该方法实现单线程.
三、使用参数:
参数:$P{parameterName} 报表参数实现模糊查询的两种方式:
1.在传递参数的首尾加上百分号:%param%
2.定义SQL语句时$P!{param}
第二种方式更为灵活。
四、使用报表自带的变量:
在iReport中使用的最多的是报表工具自带的page Number,total Pages,page X of Y以及Total.
前三者功能相仿能够顾名思义,拖曳page Number或page X of Y到PageFooter即可在报表运行时显示页数,total pages能够显示总页数。Total能够做统计工作拖曳后会弹出一个对话框可以选择想要汇兑的字段。
五、显示运行日期:
可以直接在Text Field里面输入new java.util.Date(), 然后把Pattern设成如yyyy-MM-dd.
六、简单实现chart:
拖曳一个chart tool到summary区域,以饼状图为例,右键选择chart properties,切换到chart data面板,再下面切换到Details面板,分别在key Expression,Value Expression,Label Expression输入$F{要分组的字段},$F{值字段},$F{这个是可选的}
柱状图:series Expression:表示图表下方的按哪个字段来进行颜色的划分。Category Expreesion:表示按哪个字段来进行分类、分组。Value Expression:表示显示的值。