iReport也是开源组织sf.net中的一款免费软件,是为JasperReport设计的强大的,直观的,易于使用的可视化报表设计器,采用纯Java开发。这个工具允许用户可视化编辑包含charts、图片、子报表等的复杂报表。iReport 还集成了JFreeChart图表制作包,允许用户可视化地编辑XML(JasperDesign)文件。用于打印的数据可以通过多种方式获取包括:JDBC,TableModels, JavaBeans, XML,Hibernate(支持HQL查询语言), CSV等。它支持多种输出格式包括:PDF,RTF,XML,XLS,CSV,HTM。
iReport报表绘制
不同版本的iReport在界面上会存在一些差异,以下文档基于iReport-5.6.0编写
1) 新建报表
【文件】à【New…】
选择一个模版,【Openthis Template】
通过【Browse】选择文件保存位置,并填写报表名称【Report name】
完成
2) 创建Database Sources
点击【ReportDatasources】图标
【New】
选择一个datasourcetype,这里选【Database JDBC connection】
填写数据库连续的相关信息,并保存
勾选默认Datasources,并关闭窗口
3)设置报表主要SQL
输入主要SQL,相应的结果集的列会出现在下方
4) 报表结构
5) 在Detail中使用SQL结果
6) 使用iReport内置变量
7) 使用报表外部参数
右键【Parameters】,选择【添加Parameter】
通过右侧的【属性面板】修改参数名称,并拖动到报表中
8) 使用Dateset 创建汇总报表 (次要SQL)
右键【报表名称】(比如report_test002),选择【Add Dataset】
填写Dataset名称,【下一步】
选择DataSources,并填写SQL语句
选择要使用的列,并【下一步】
使用Group组自动Group up,也可通过SQL进行Group up
通过【窗口à组件面板】打开组件面板
拖动Chart图标到报表中
选择一个图表类型,【OK】
选择要使用的DataSet(比如上文刚刚创建的myDataSet1)
填写Series描述
通过右侧按钮填写横坐标分组组名,即分组值
9) 预览报表
通过【预览】图标查看报表结果
如果有外部参数,将会弹出提示框要求录入
看到报表结果,可以通过【Designer】图标返回到设计界面
10)编译报表
通过【编译】图标,可以对报表进行编译
编译后,同个目录下,可以找到编译后的文件:
比如,report_test002.jasper
接入到Spring mvc项目中
由于jasperreports的主包,直接用gradle去maven repository拿会出现olap4j.jar找不到的问题。所以,这里直接去jasperreports的官网下载 http://community.jaspersoft.com/project/jasperreports-library
然后将olap4j-0.9.7.309-JS-3.jar和jasperreports-6.2.1.jar 放到项目里面的文件夹(新建lib/jasperreports文件夹),再在gradle的build文件里面进行配置,如下:
fileTree(dir: "${rootProject.projectDir}/lib/jasperreports", include: '*.jar'),
"commons-digester:commons-digester:1.7",
"org.codehaus.groovy:groovy-all:2.4.7",
"com.lowagie:itext:4.2.1",
"com.itextpdf:itextpdf:5.4.3",
"com.itextpdf:itext-asian:5.2.0",
这里凭证完成后,还会出现中文不显示的问题,jasperreports6之前的版本用itext-asian.jar就可以解决,但是6.0以上的就只能手动添加字体问题,步骤如下:
找到刚刚下载的jasperreports-6.2.1.jar,用解压工具查看字体目录(jasperreports-6.1.1\demo\fonts\net\sf\jasperreports\fonts\dejavu),将下载好的simsun.ttf和simsun.ttc文件copy到dejavu目录,并修改fonts文件夹下的jasperreports-fonts.xml文件。加入下列配置(用IReport设计报表时,font name要设置成“宋体”):
net/sf/jasperreports/fonts/dejavu/simsun.ttfnet/sf/jasperreports/fonts/dejavu/simsun.ttfnet/sf/jasperreports/fonts/dejavu/simsun.ttfnet/sf/jasperreports/fonts/dejavu/simsun.ttfIdentity-Htrue'宋体', Arial, Helvetica, sans-serif'宋体', Arial, Helvetica, sans-serif
JAVA代码如下: