前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快速学习JasperReport-分组报表

快速学习JasperReport-分组报表

作者头像
cwl_java
发布2020-02-11 13:29:01
2.2K0
发布2020-02-11 13:29:01
举报
文章被收录于专栏:cwl_Java

2 分组报表

2.1 概述

有两种情况会使用分组报表:

  1. 美观和好看的显示。
  2. 当数据分为两层表时,经常需要批量打印子表的数据。打印时,常常需要按照父表的外键或关联值进行自动

分组,即每一条父表记录所属的子表记录打印到一组报表中,每组报表都单独计数及计算页数。在应用中,可以通过选择需要打印的父表记录,将父表记录的 ID 传入,由报表自动进行分组。

2.2 设置分组属性

(1)新建模板 使用用户列表模板完成分组案例

(2)新建报表群组 选中报表名称点击右键,选择菜单中的“Create Group”。

在这里插入图片描述
在这里插入图片描述

需要设置分组的名称、分组字段。也可以设置按照指定的函数、方法处理后进行分组

在这里插入图片描述
在这里插入图片描述

按照字段“companyName”进行分组。设置完毕,点击“Next”。系统显示细节设置界面。此处可以设置是否加入“group header”和“group footer”区。建议保持默认选中,加入这两个区域,这样可以控制在每组报表的结尾,打印相应的信息,例如统计信息等。

在这里插入图片描述
在这里插入图片描述

(3)放置报表数据 将companyName拖入 Group Header中 ,会跳出 Text Field Wizard框,选中 No Calculation Function

在这里插入图片描述
在这里插入图片描述

双击 $F{deptId} 会弹出Expression editor

在这里插入图片描述
在这里插入图片描述

2.3 添加分组Band

将需要作为表头打印的内容拖入 CompanyGroup Header1 栏,将字段拖入 detail 栏,将每个分组结尾需要打印的内容放入 Companygroup footer 栏,将页脚需要打印的内容放入 Page Footer栏,如下图。

在这里插入图片描述
在这里插入图片描述

2.4 PDF输出

代码语言:javascript
复制
 //测试分组
    @GetMapping("/testJasper05")
    public void createPdf(HttpServletRequest request, HttpServletResponse response) 
throws Exception {
        //1.引入jasper文件
        Resource resource = new ClassPathResource("templates/testGroup.jasper");
        FileInputStream fis = new FileInputStream(resource.getFile());
        //2.创建JasperPrint,向jasper文件中填充数据
        ServletOutputStream os = response.getOutputStream();
        try {
            HashMap parameters = new HashMap();
            //构造javaBean数据源
            JRBeanCollectionDataSource ds = new
JRBeanCollectionDataSource(getUserList());
            /**
             * 1.jasper文件流
             * 2.参数列表
             * 3.JRBeanCollectionDataSource
             */
            JasperPrint print = JasperFillManager.fillReport(fis, parameters,ds);
            //3.将JasperPrint已PDF的形式输出
            JasperExportManager.exportReportToPdfStream(print,os);
            response.setContentType("application/pdf");
       } catch (JRException e) {
            e.printStackTrace();
       }finally {
            os.flush();
       }
   }
    //创建数据库Connection
    public List<User> getUserList() throws Exception {
     List<User> list = new ArrayList<>();
        for(int i=1;i<=3;i++) {
            User user = new User("it00"+i, "itcast"+i, "1380000000"+i, "传智播客", "讲 师");
            list.add(user);
       }
        for(int i=1;i<=3;i++) {
            User user = new User("hm00"+i, "itheima"+i, "1880000000"+i, "黑马程序员", "讲 师");
            list.add(user);
       }
        return list;
   }

效果如下:

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2 分组报表
    • 2.1 概述
      • 2.2 设置分组属性
        • 2.3 添加分组Band
          • 2.4 PDF输出
          相关产品与服务
          腾讯云 BI
          腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档