JasperReport、iReport以及JavaBean绑定表格动态赋值

1、 Jasper简介

       Jasper是一款比较优秀并且开源的报表设计软件,完全采用java语言开发,支持多种数据源,而且能够设计比较强大的报表,该报表面向的对象更多的是针对开发人员而不是用户。

2、Jasper的使用

        因为在项目中需要用到报表设计,报表设计有多种选择,因为此次报表设计表较复杂,最终确定选用了Jasper。

        本次主要介绍的功能有:

        (1)、报表设计器界面中各部分的作用。

        (2)、设计报表

        (3)、表格绑定JavaBean数据源。

        (4)、显示乱码问题。

        (5)、代码中对表格进行动态赋值。

2.1、报表设计器界面中各部分的作用

        2.1.1、新建项目

        2.1.2、新建报表

右击项目名称,新建报表,给报表取名字,然后一路next。

 会生成如下页面:

 其中各模块(Band)的作用:

tital(标题):只会显示在第一页。

Page Header(页头):显示在每页顶部位置。

column Header(行头):显示在每页的顶部但是低于Page Header。

Detail(主要内容):这里是展示我们详细的内容,也是在所有Band中唯一一个可也按需增加的Band模块。

Column Footer(行尾):显示在每页底部,但是会高于page footer。

Page Footer(页尾):显示在每页页尾。

Summary(总结):显示在最后一个Detail之后并在Column Footer之前。

2.2、设计报表

这是本次设计的最终样式:

 效果图:

 注:上图表示两页pdf,为了方便展示,截图拼接。

2.2.1、设计页说明

1、公司编号及公司名称是两个static Text,这个主要是用来设置静态文本。

2、在Fields出右键点击Create Field,创建两个field,然后将其拖至图上位置。

注:此处的parameter_2是在第二个Detail里面(Detail2),新增detail2的方法是在第一个detail处右键,点击Add Detail Band。

3、新增一个Table组件

 双击Detail1中的表格,然后进入如下页面:

 根据上图的文字说明,将表格修改完成。

2.3、表格绑定JavaBean数据源(重要)

这里有一点问题,因为对数据库数据源或者Json数据源,设计器都能够支持,但是对于javaBean,设计器支持不是很好,这时候我们需要自己手动给表格绑定数据源。具体操作如下:

(1)在我们报表下的Fields下创建一个Field,这个是用来在代码中传递我们表格参数的载体字段。我这里名字叫做tableList。该字段的数据类型必须是 net.sf.jasperreports.engine.data.JRBeanCollectionDataSource

 (2)双击Detail1中的表格,在Parameter中创建table1。该字段的数据类型必须是  net.sf.jasperreports.engine.JRDataSource

(3)手动绑定javaBean数据源(重要)

查看报表源代码,之后找到 jr:table标签,然后找到datasetRun标签在该标签内手动增加下面代码:

<datasetParameter name="table1">
	<datasetParameterExpression><![CDATA[$F{tableList}]]></datasetParameterExpression>
</datasetParameter>
<dataSourceExpression><![CDATA[$F{tableList}]]></dataSourceExpression>

这里的table1、tableList就是之前设置的。

至此,报表设计完成。

2.4、解决乱码问题

在我们导出的时候,中文可能会看不见,这个是因为在报表设计器中内置的字体,在导出pdf的时候,用不到,甚至我们在代码中生成的pdf,也会因为字体不存在导致生成的pdf看不见中文。

2.4.1、字体查找

在我们的windows中,有很多字体,存在于 C:\Windows\Fonts这个路径下,我们找到我们想要使用的字体(一种或多种字体),单必须保证这些字体都是 .ttf结尾的。.ttc文件我们可也转化为.ttf文件。具体百度一下。

2.4.2、将字体导入报表设计器中

 点击Add后做如下操作:

 点击Finish后,我们在报表设计器中导出的pdf文件就不会乱码了,如果我们需要修改代码里面中文不显示问题,我们可也在如下页面导出字体jar包

 导出后在项目中引用该jar包即可。

2.5、代码中对表格进行动态赋值

代码动态赋值请访问github:GitHub - liangyongpeng/jasper-report-test: JasperReport代码动态替换属性值

 注意点:

(1)代码中需要引入的依赖:

        <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>6.16.0</version>
            <exclusions>
                <exclusion>
                    <groupId>com.lowagie</groupId>
                    <artifactId>itext</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

(2)参数类型:

3、文档

        如需要文档(英文版,包含操官方用户手册和API接口文档),请私信!!!

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值