iReport制作报表1:iReport Designer的使用

前些日子lz学着用iReport来制作EXCEL报表,虽说制作的报表结构比较简单,但是还是要记录一下,以免忘掉。

使用iReport制作报表分为两个部分:iReport Designer制作模板,Java编码。本文主要介绍iReport Designer的用法。

lz使用的是Jaspersoft iReport Designer 5.6.0。下载安装啥的lz就不说了,相信大家自己都能搞定。

1.创建一张空报表

ireport1

lz使用的是第一个模板,其它的模板lz也没有使用过,大家可以自己试一试。

ireport2

报表的结构共分为7个部分,如上图所示。

  • Title:报表总标题,一个报表可能有很多页面组成,Title标题是只在第一页显示的标题。
  • Page Header:本带区可以放置一些报表的页眉信息,如报表标题、打印日期等。
  • Column Header:用于放置表头表格的表头信息。
  • Detail:放置数据内容的地方,能自动循环显示数据库里面所有记录。
  • Column Footer和Page Footer:带区跟Page Header和Column Header作用想对应。
  • Summary:本带区主要用作报表的统计,统计的结果将显示在所有报表的最后一页。

报表文档本身有些常用的属性,如改变报表页面的大小,设置页面的显示方式,我们可以对其进行设置。

选中左侧“报表文档结构栏”中结构树顶端的报表名称,右侧会出现报表属性:

ireport3

我们使用Page size属性将宽高设置为800×600,使用Margins属性,将报表周围的白框去掉(都设置为0)。

ireport4

以此类推,报表中的每个部分都可以进行设置,只要点击结构树中相应的内容,就可以在右侧属性栏中进行修改。

ireport5

2.使用组件构造报表

下面介绍几个常用组件:

ireport6

  • Rectangle:用于画表格的样式,整个表格的样式使用次组件做出来的,本控件表现为一个黑色矩形框,多个黑色矩形框排在一起可以组合出来任何想要的报表样式。
  • Static Text:静态文本框,报表上显示的静态文本,都是由它完成的,主要用于显示报表标题、表头的静态文本。
  • Text Field:报表最主要最常用的控件,主要用于呈现数据库里面字段的值。
  • Subreport:子报表,在制作一些稍微复杂的报表中会用到,在后面的博文中会专门讲到。

(1)使用Rectangle拼出报表的基本结构:

ireport7

(2)使用Static Text添加标题及表头信息:

ireport8

(3)使用Text Field添加要显示的数据字段:

ireport9

那$F{}有什么作用呢?接下来为大家介绍。

3.连接数据源

报表的结构大体上已经完成,下一步就是连接数据源了。iReport可以配置的数据源有很多种,lz主要使用了JDBC以及JavaBean。本文中主要介绍如何使用JDBC数据源,而在后面的博文中,将介绍JavaBean数据源。

ireport10

创建数据源,我们选择Database JDBC connection

ireport11

下一步是连接数据库的配置,大家根据自己的数据库配置来填写,这里就不赘述了。

数据可配置好以后,我们就可以查询报表中所要展示的数据信息了。

ireport12

创建SQL语句,查询出我们所要的字段。

ireport13

这里的字段名称,要与刚才定义的$F{}的参数名称相一致,这样才能将数据与Text Field绑定。还需要注意的是,我们创建了一个parameter名为campaignid,这个是要输入的参数(如果是Java代码调用该模板,也需要传入该参数),根据这个id查询出所要的结果。现在来预览下报表:

ireport14

4.计算总计

数据已经查出,现在就差统计计算了。我们用variable来完成这个功能。

ireport15

我们新建一个variable名为impression_sum,作为impression的总计,然后在右侧的属性栏中配置它的表达式Variable Expression。

ireport16

还要设置一下初始值Initial Value Expression为0,设置Variable Class为java.math.BigDecimal,设置Increment type为Report。

与此类似,我们分别创建点击数总计click_sum和总花费总计cost_sum。然后根据以上3个总计值,我们计算出平均点击率clickrate_avg,表达式为($V{clicks_sum}/$V{impression_sum}).setScale(4,BigDecimal.ROUND_HALF_UP),和平均点击价格clickprice_avg,表达式为($V{cost_sum}/$V{clicks_sum}).setScale(2,BigDecimal.ROUND_HALF_UP)。让我们来预览一下:

ireport17

错误信息中描述Double类中没有setScale(Integer, Integer)这个方法,肯定是$V{cost_sum}/$V{clicks_sum}这个表达式的结果是double类型。

ireport18

这里的$F{cost}类型为java.lang.Double,我们将其改为java.math.BigDecimal,再次进行预览:

ireport19

统计的结果都出来了,报表模板基本完成。在下一篇博文中,lz将介绍怎样通过Java代码调用模板来生成EXCEL报表。

 

 

 

1 Reply to “iReport制作报表1:iReport Designer的使用”

发表评论