iReport-5.6+Jaspersoft Studio-6.4.3.final 制作报表的一些体会

时间:2024-04-07 20:57:11

最近一直在使用iReport Jaspersoft Studio 制作报表,在使用过程中遇到了不少问题,在本文中我将这些问题一一记录下来,以备以后遇到相同的问题,也能对读到这篇文章的报表制作者有所帮助。本文不在叙述制作报表的基本原理与操作,由于我所做的报表都是用在springMVC  web 端打印用的,所以所有的问题都是围绕SpringMVC展开的。

问题一:基于springMVC的报表的数据源设置。

 在新建一个报表时,有一项选择数据源的选项,如下图:

iReport-5.6+Jaspersoft Studio-6.4.3.final 制作报表的一些体会


在这里你可以配置各种方式的连接,其中最简单的是选择连接数据库,这样就可以很方便的将字段导入报表中了,然而在springMVC项目中,报表的数据源一般不会是数据库源,而是实体beanjaspersoft Studio 提供了java bean 作为数据源,但实体bean,代理类都要自己写,可用性不是太高,可以直接定义如上图中的数据源:一个空的数据源。然后在outline栏中找到对应报表下的fields 菜单,将你要用到的字段手动添加进去。在这里一定要注意设置字段类型要与java bean 字段 数据类型保持一致。

问题二:主子表共用数据源与子表路径问题。

    1.主子表共用数据源。

sringMVC项目中,一般要求主表和子表是用同一个数据源的,而在报表设计中要求每个报表都要有数据源的,如何解决这一问题呢?首先在主表fields 中定义一个集合字段,对应java bean 中子表集合,用来装入子表字段。如下图:

 iReport-5.6+Jaspersoft Studio-6.4.3.final 制作报表的一些体会

在选择class 时,一定要选择List,如果没有这个选项,可以手动写入。然后点击选中子表,在右侧状态栏中找到subReport 菜单如下图:

 iReport-5.6+Jaspersoft Studio-6.4.3.final 制作报表的一些体会

 

点击编辑Data Source Expression 选项,输入:new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{irClaimTravelCals})  ,如下图:

 iReport-5.6+Jaspersoft Studio-6.4.3.final 制作报表的一些体会

2. 子表加载路径路径

jaspersoft Studio 中 通过SubReport 控件添加的子表路径默认是当前目录路径,在jaspersoft 中预览是没有问题的,但将做好的报表移植到springMVC项目中时就会报子表找不到的错,这个就要修改子表路径来解决,首先选中主表,在parameter 栏中增加一个参数:

SUBREPORT_DIR ,如果已经有这个值了,就修给他的配置就行了,配置如下:

 iReport-5.6+Jaspersoft Studio-6.4.3.final 制作报表的一些体会

其中Default Value Expression 一定要设置为 “ ”,表示默认路径为空,看到子表配置就明白为什么要这么设置了,SUBREPORT_DIR 这个参数是用来接受springMVC给报表传的路径参数,springMVC一般这么传参数:model.addAttribute("SUBREPORT_DIR",request.getRealPath("/WEB-INF/jasper/")+"/");

设置完主表后,点击选中子表,和上面主子表共用数据源一样在右侧状态栏找到subreport 菜单,找到expression 一栏,编辑如下:

iReport-5.6+Jaspersoft Studio-6.4.3.final 制作报表的一些体会

其中irClaimTravelCalBill.jasper  是子表的报表名,这样路径就设好了,通过修改

SUBREPORT_DIR的值就能加载放在不同地址的子表。

问题三:报表textfield中文字类型转换与格式问题。

 springMVC中经常会碰到后台给报表传递值时,只传递了一个英文标志,我们需要把他们转换成我们需要的信息,在右侧状态栏找的textfield 栏中找到expression 编辑如下:

 iReport-5.6+Jaspersoft Studio-6.4.3.final 制作报表的一些体会

这样就把后台传的payMethod字段值转换成我们想要的结果了。

textfield 中还有其他的设置如下:

 iReport-5.6+Jaspersoft Studio-6.4.3.final 制作报表的一些体会

点击pattern,进入里面就可以设置报表要展示的格式。