服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - iReport使用指南及常见功能示例详解

iReport使用指南及常见功能示例详解

2022-03-01 00:28GGdido Java教程

这篇文章主要介绍了iReport使用指南及常见功能,本文以iReport 3.5.1为例,通过示例演示给大家介绍的非常详细,需要的朋友可以参考下

在使用ireport的过程中,因为各种功能都要百度,但是大家使用的例子又千差万别让人很苦恼,所以用一个简单例子贯穿的展示一下ireport的常见功能。
我使用的是iReport 3.5.1,使用的示例数据表如图:
sales表:(人名、大致结构来自帆软电子文档,如有雷同,无意冒犯)

iReport使用指南及常见功能示例详解
iReport使用指南及常见功能示例详解

sellers表:

iReport使用指南及常见功能示例详解
iReport使用指南及常见功能示例详解

下面开始介绍:

 

报表结构

iReport使用指南及常见功能示例详解

左边是view区,联系着主设计区中的各个band区域的数据,以及参数、变量等。中间是主设计区,通过拖拽控件面板可以在此区域进行设计,有三种模式:设计(Designer)、源码(Xml)、预览(Preview),设计模式是可视的,源码方式可以直接在上修改,预览是对设计好的报表样式进行预览,也是一个编译的过程;右边是控件面板和属性面板,可以在此使用控件和设置属性。
JasperReport有三个方式来保持数据:Field、Paramrter、Variables。
一般情况下,Field是用作保存从数据源取出来的数据,用法是

iReport使用指南及常见功能示例详解

Parameter是用来占位―我们在设计时往往不知道具体的值,那么用一个参数来占住它们的位置,在执行时,从程序或者数据库中传递对应的参数过来,从而实现一个动态的过程,用法是

iReport使用指南及常见功能示例详解

Variables是变量,可以将变量用于TextFild表达式中,也可以设置它的属性,使它具有一些功能,如求和,求平均数等,用法是

iReport使用指南及常见功能示例详解

 

数据源

ireport提供很多种数据源的连接方式,
点上方的数据库标识就可以设置数据库,下方的数据标识用来写SQL语句获取数据。

iReport使用指南及常见功能示例详解

我们这里选择jdbc数据连接,mysql连接语句,数据库名称是test

iReport使用指南及常见功能示例详解

test一下是否连通,输入数据库密码以后,如果成功会出现提示:

iReport使用指南及常见功能示例详解

 

示例

3.1 简单示例

首先连接数据库表sales:

iReport使用指南及常见功能示例详解

点击ok,这时左侧view窗口的field区域就得到了取到的数据:

iReport使用指南及常见功能示例详解

这时,在主设计区域拖拽静态文本控件:

iReport使用指南及常见功能示例详解

在column header区域添加列名,然后拖动左侧的field字段到detail域相应的列名下:

iReport使用指南及常见功能示例详解
iReport使用指南及常见功能示例详解

3.2 分组示例

有时候我们需要分组来观察数据,这时就需要group,我们以区域id来分组,需要注意的是,如果使用group分组,需要在一开始的sql语句中加上order by语句,否则ireport是不会自动分组的。

右键添加一个分组:

iReport使用指南及常见功能示例详解

接下来会有一个向导,我们根据向导一步步操作:

iReport使用指南及常见功能示例详解

然后下一步,完成。

iReport使用指南及常见功能示例详解

3.3 子表方式分组查看

如果不想在sql语句中增加order by语句,那么可以使用子表的方式进行分组查看,例如我想在父报表master.jasper中查看子报表sub_report.jasper的信息,需要用到销售情况表sales和员工情况表sellers以及子报表控件和一个参数 area_id。
首先建立子表员工信息表sub_report.jasper,新建一个参数,作为连接两个表的桥梁:area_id,参数的属性设置如图

iReport使用指南及常见功能示例详解

主要是要把parameter class设置成与数据库表中同样的类型以防出错。

然后为sub_report绑定数据库表,此时需要注意SQL语句中需要包含我们设定的参数 $P{area_id}

iReport使用指南及常见功能示例详解

接下来,我们preview一下,这时需要给一个参数测试,假使我们给定1,结果如图:

iReport使用指南及常见功能示例详解

这说明分组已经成功,我们下一步需要把子表与父表连接起来。
同样需要新建一个报表文件master.jasper,为方便查看,将区域名称拖入detail区域备用。

iReport使用指南及常见功能示例详解

拖拽子表控件,根据向导完成子表属性设置
(1)选择已有子表,注意是选择编译后的文件,sub_report.jasper,而非sub_report.jrxml。如果先建父表,在这里选择创建子表,按照向导创建子表,流程如上。

iReport使用指南及常见功能示例详解

(2)使用内建连接参数表达式

iReport使用指南及常见功能示例详解

(3)设定参数值为本报表中已存在的field域中的$F{area_id}

iReport使用指南及常见功能示例详解

(4)存储子表表达式,事实上,我将子表和父表已经放在同一个文件夹中所以不必使用绝对路径法,只需存储一个路径名称即可

iReport使用指南及常见功能示例详解

完成,运行一下:

iReport使用指南及常见功能示例详解
iReport使用指南及常见功能示例详解

3.4 图表示例

3.4.1 饼图

针对 Pie图表类型,有三个表达式需要我们输入:Key,Value 和 Label。表达式 Key 允许你标识 Pie 图里的一块。如果 Key 的值出现重复, 那么 Label 和 Value的值会关联起来用来覆盖 Key 的值。一个 Key 值不能为 null。Value 的表达式值指定这个Key 的数字值。Label 表达式的值允许你为并图中每一块指定一个标签。这个表达式的值是可选的,同时默认值为 key=value
首先拖动图表控件,ireport支持多种图表,因为示例的数据比较简单,我们就只说饼图和柱状图。

iReport使用指南及常见功能示例详解
iReport使用指南及常见功能示例详解

放好饼图以后,右键chart data,设置图表属性

iReport使用指南及常见功能示例详解

这里需要注意的是,value是用来表述你划分饼图关键词的值,本例中,我们根据售货员来销售的苹果汁来划分饼图,那么key就是售货员,他的“值”,也就是苹果销售量就是value,value一般要求是数字类型。

iReport使用指南及常见功能示例详解

如果我们将label表达式换成$F{apple},就会是如下效果:

iReport使用指南及常见功能示例详解

个人认为还是后者比较直观。

3.4.2 柱状图

过程和饼状图一样,效果如下:

iReport使用指南及常见功能示例详解

显然更复杂的数据比较能体现到他的用处。

3.5交叉报表

有时候我们不仅需要纵向比较数据,也需要同时横向进行比较,这就用到了交叉报表。
交叉报表需要用到空间crosstab
我们新建一个报表文件CrosstabTest,统计一下不同区域苹果汁的销售情况,绑好数据表后,拖拽交叉报表控件,根据向导设置:
首先选择主报表数据集:

iReport使用指南及常见功能示例详解

然后,设定行参数,我们选择区域id作为分组依据,group2暂时不用。

iReport使用指南及常见功能示例详解

接下来是列参数,选择销售人员作为分组依据。

iReport使用指南及常见功能示例详解

然后是主区数据,我们主要是看不同区域不同销售人员苹果汁的销售情况所以选择apple,由于是计数,fuction选择count即可。

iReport使用指南及常见功能示例详解

最后是布局,crosstab控件会自动带行总数列总数,可自选。

iReport使用指南及常见功能示例详解

完成:

iReport使用指南及常见功能示例详解

不在该销售区域的会被标记为0.

此外,iReport还有获取当前时间,获取页数等小工具可供使用,这些工具都是基于TextField可以更改表达式进行定义。当模板文件编译后,可放至程序中使用,并进行参数传递。

这是我这一段对ireport的摸索,因为数据简单,很多问题还没有发掘出来,有错误和不足的地方欢迎一起讨论改正。

原文链接:https://blog.csdn.net/GGdido/article/details/51162979

延伸 · 阅读

精彩推荐