iReport 是为JasperReports Library和JasperReports Server设计的报表可视化设计器。
iReport是一个能够创建复杂报表的开源项目。它100%使用Java语言编写。是目前全球最为流行的开源报表设计器。
由于它丰富的图形界面,你能够很快的创建出任何一种你想要的报表。
用于打印的数据可以通过多种方式获取包括:JDBC, TableModels, JavaBeans, XML,Hibernate(支持HQL查询语言), CSV等。
它支持多种输出格式包括:PDF,RTF,XML,XLS,CSV,HTM。
本教程环境如下,如版本不同出现与本文内容不合情况请自行百度~
iReport:版本5.0.0
JDK环境:版本1.6,全名:jdk1.6.0_45,即下载jdk-6u45-windows-x64.exe
需要本机/虚拟机的JDK环境变量设置为JDK1.6才能运行iReport,环境变量怎么设置应该不必多说了吧,忘了的可以看我这篇博文:win7/win10下的jdk的安装和环境变量的配置
环境变量配置好后如果还是打不开iReport,请重新启动电脑
楼主不才,如有错误之处,请评论必虚心改之
链接:https://pan.baidu.com/s/19sYMlephAMxgcTSKnobeTg
提取码:0u28
失效请联系楼主
1.左上角文件——》new
Open this Template
打开此模板2.对模板进行命名
3.finish完成新建
1.打开模板可以看到这样的视图
2.删除和添加页面布局
和前端的css一样,为了样式复用,减少繁琐的样式操作,每个样式都可以继承另一个样式,继承的样式没有本身样式的优先级高
右键点击Styles——》添加一个style名为china
右上角有控件列表,使用只需要拖进布局视图即可
其中的Page Break 表示在此之下建立一个新的分页,相当于word的分页符
举例:
在第二页1前放一个分页符:
查看预览效果:
分页符后就是这一页的结束,分页优先级高于detail自动分页
四个图形控件:
都可组合其他控件,但操作过复杂,不推荐
示例:
静态文本,不具备自扩展能力,意思是框子有多大,显示的内容就多大,多余的内容不显示
示例:
预览:
文本域
文本域写法:
点击属性中的Text Field Experssion
可对文本域进行编辑
""
中使用自扩展,需改变两个属性:
示例:
预览:
图片,可选本地文件或者网络URL,一般使用网络URL
示例:
预览:
条形码,一般选取Code128条形码
示例:
table 和 subreport之后介绍
1.寻找驱动
以导入Oracle驱动为例,Mysql驱动iReport已存在
首先去能连入生产数据库的项目看看,用的是哪个版本的驱动,然后从Maven仓库中找到Oracle驱动的jar包
比如我这个版本的Oracle驱动
懒的找的童鞋去maven官网下个jar包:https://mvnrepository.com/artifact/com.oracle/ojdbc6/11.2.0.3
2.放入bin
把驱动包放到iReport的安装目录\iReport-5.0.0\bin
下
3.点击左上角的工具——》选项——》Classpath——》Add JAR
4.找到刚刚放入bin的驱动包添加进去,确定,驱动添加完成
1.点击此图标
2.点击new——》Database JDBC connection
3.选择刚刚导入的oracle驱动,URL、用户名、密码自行填写
4.点击Test,连接成功则Save,失败则是某个环节出问题了
5.选择此连接,创建连接成功
有了连接,我们就需要查询数据库的sql语句了,这里分为主查询和子查询,都可要参数可不要参数
1.点击上方的按钮
2.添加sql
我连接的是本地oracle,查的表是一张测试用户表
可以点击 Read Fields 查看查询到的字段
这个sql是个全查sql且没有条件,我们给它加一个name条件
3.添加条件和其参数
name是String类型的,新建的参数也需要此类型
点击ok,完成一个带条件的主查询sql语句
4.测试主查询
主查询一般用于整体布局中的参数填入,也就是可以把刚刚查出来的那几个字段的值插入到我们设计的页面中
可以从Fields看到可以选择的字段名
用Text Field来插入字段值
预览:
因为需要传入参数,所以预览需要一个name的条件参数值
输入参数后,可得到预览页面
很多时候并不是一个主查询的一个sql语句就能查到所有想要的数值,那么可以新建多个子查询
子查询同样可以通过条件参数来查询,可以新建一个条件参数,也可以使用主查询同名的条件参数
一般是单数据源,所以选择创建空的dataset
还是熟悉的界面,还是熟悉的操作,传入的参数名取和主查询一样的名字——name,这样只需要输入一次name的值子查询也可查询完毕
特别注意的是,记得给字段取别名,不要都叫一样的名字,不仅自己容易混淆,程序也容易出错
例子中的主查询返回值只有0个或1个对象,而子查询可以返回多个对象(列表),这时候可以使用table了
拖一个table到一个单独的detail
中,这样detail会自适应table
选择table所用的dataset,刚刚的创建t1
选择需要显示的字段,一般全选
选择连接的数据源,一般是一个数据源,也就是创建连接
中的那个数据源
如果是第一次创建table,勾上这个,会为表头\表尾、表列头\表列尾、表边框、表内容各创建一个style
表介绍
style介绍
最终是这样展现的
终极丑有木有?明明只想要最原始的表格就好了,太花花绿绿了
删除除了有字段的所有其他行
将Table、Column Header、嵌入的Text Field、Static Text的样式全部选择为table_TD,再拉长Text Field、Static Text占据列长
此时表就创建好了,这个表是根据子查询dataset t1的数据来填入信息的,t1是需要传入一个参数的,这个参数的值我们需要去指定,右键Table——》Edit Table datasource
t1子查询需要一个name参数的值,这个值可以从输入参数(如 P N A M E ) 取 , 也 可 以 自 己 去 设 定 ( 如 " c i c h e n g " ) , 还 可 以 从 主 查 询 的 字 段 值 中 取 ( 如 P{NAME})取,也可以自己去设定(如"cicheng"),还可以从主查询的字段值中取(如 PNAME)取,也可以自己去设定(如"cicheng"),还可以从主查询的字段值中取(如F{NAME})
布局:
预览:
表格这个属性记得改成这个:
可以达到没数据也可以有表头的效果
相当于再新建了一个模板,但主模板包含这个子模板
子模板本身也具备所有主模板的特性,拥有主查询和子查询,层层套娃
示例暂且先鸽了,因为以上内容足以完成模板的布局与样式,之后会继续更新~
本人原创内容,如需转载,请联系一下我~