JasperReport 报表在SpringMVC WEB项目中的应用(JavaBean作为数据源)

本文介绍了如何在SpringMVC Web项目中使用JasperReport进行报表展示和导出,讲解了ireport模板制作、报表分组与总计、嵌套报表的制作方法,并提供了项目引入、模板编译及Java代码示例。
摘要由CSDN通过智能技术生成

使用场景

在本文中我将JasperReport应用于某业务管理系统(WEB)的综合查询页面中,用于报表展示以及PDF和EXCEL文件的导出。
使用效果如下:
这里写图片描述

模板制作

在项目中使用之前,需要限制做好jasper模板。比较方便的做法是使用ireport制作模板。

ireport

界面

ireport界面如下,我们可以新建一个A4空白页面,或者使用ireport中准备好的模板。
这里写图片描述

重要参数

  • Fields
    直接存储对应数据的地方,用于存储JavaBean的变量或者数据源的字段。比如

class bean{
private String col1;
private Integer col2;
// getter, setter 略
}

在Fields中就得有对应的col1, col2 而且数据类型也得一一对应比较好,不然可能出现转换错误。

  • Variables
    用于保存Fields中数据的一些自定义计算结果的地方,比如下文讲到的分组求和。

页面元素

  • Title
    报表的标题页,分页报表也指出现在第一页。
  • Page Header
    报表的页眉,位置处于Title之下,分页报表中每页均会出现。
  • ColumnHeader
    数据展示的列标题
  • Detail
    数据展示的详细列表(一条数据占一行)
  • ColumnFooter
    列的末尾,可以用于合计项目
  • PageFooter
    页脚,分页情况下每页均会出现。
  • Summary
    位于最后一页的末尾,但是位于页脚之前。

页面组件

  • Static Text
    用于显示静态文本,可以作为字段的标题
  • TextField
    用于显示变量的值,可以用于Fields以及Variables
  • PageNumber \TotalPages\ Page X of Y
    页码相应信息的展示
  • CurrentDate
    用于展示报表的生成日期

报表制作

基本使用

  • 1、创建基本A4空白页面
  • 2、根据JavaBean录入Field
  • 3、在模板中绘制表格(注意默认方格可以是StaticText和TextField拼接出来的,但是要设置边框宽度,否则没有边框)。
    模板如下:

这里写图片描述

4、需要结合动态数据的地方使用Text Field。并且编辑Field的表达式(在这里可以指定显示Filed还是Variable)。
5、点击Compile或者预览,就能生成.jasper文件啦。

进阶-分组合计

制作报表肯定不能只列举每个商品的销售清单,如果要统计每个商户的销售情况,就得按照商户分组合计。有点类似 SELECT SUM(XXX) FROM REPORT GROUP BY COMPANY 这样的效果。
流程如下:
1、在设置好Fields后,右键单击报表,选择Add Report Group。
这里写图片描述
在这里命名好分组名,选择GroupBy 的字段即可。
* 多字段分组,使用下面的expression。可以填写$F{fields1}+$F{fields2} 这样。
2、声明汇总字段
新建Variable
Calculation设置为Sum,选择相应的Group
VariableExpression 中选择需要计算的Field
在需要展示的Text Fields中设置表达式为该Variable即可。

嵌套报表

~~~~不太会。不过主要用于实现类似EXCEL的纵向合并单元格。

模板编译

ireport保存的模板文件后缀为jrxml。而jasper使用的模板文件后缀为jasper。jasper文件可以从ireport的编译结果中得到。这里可以在’工具 - 选项 - Compilation and excution’ 中,将 Compilation directory 指定到你想保存jasper文件的地方,这样在编译后,编译结果就能方便的拿到了。
截图如下:
这里写图片描述

项目引入

包引入

  • MAVEN引入jasper包
        <!-- jasperreport -->
        <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>4.1.3</version>
        </dependency>

同时再引入中文字体包iText, iText-Asia。
注意:在WEB-INF/classes中建立一个jasperreports.properties 中加入一条:
net.sf.jasperreports.awt.ignore.missing.font=true 这样在中文字体找不到的时候可以自动调用默认字体而不是直接报错。

模板使用代码

将.jasper文件放在web资源路径下。
在java代码中查询出数据列表List<JavaBean> 将其填充到数据源中,然后套用模板即可。jasper的报表数据可以有好几种形式,这里只写通过HttpResponse输出的方法(HTML,PDF,EXCEL)。

java代码如下:

@RequestMapping(value = "/queryIncomeSumServlet", method = RequestMethod.POST)
    public void queryIncomeSumHtml(HttpServletRequest request,
            HttpServletResponse response) throws IOException {

//STEP 1 : 查询数据 
List<JavaBean> beans = myService.getData();
//STEP 2 : 指定数据源
JRDataSource datasource = new JRBeanCollectionDataSource(sales);
//STEP 3 : 指定模板文件
ServletContext context = request.getSession().getServletContext();
File reportFile = null;
reportFile = 
  • 4
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值