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

快速学习JasperReport-父子报表

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

4 父子报表

4.1 概述

复杂报表或数据内容较多的时候,可以使用子报表解决。

4.2 制作父报表

首先制作父报表,就是调用子报表的一个基础报表。主报表的作用有如下两种:

  1. 父报表中需要显示数据,使用子报表弥补studio设计的不足
  2. 父报表不需要显示任何数据,只是作为子报表的载体。适用于复杂报表的设计

4.3 制作子报表

点击组件面板上的“Subreport”按钮,拖动到报表工作区上。

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

系统会自动弹出子报表选择窗口。可以选择创建一个新报表,还是使用一个已有的报表作为子报表。

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

选择“Create a new report”,可以立即制作新的子报表;如果选择“Select an existing report”,则可以调用已经有的报表作为子报表;如果选择“Just create the subreport element”,系统会生成一个子报表区,可以在之后挂接需要的子报表。

4.4 参数传递

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
 	//测试父子模板
    @GetMapping("/testJasper07")
    public void createPdf(HttpServletRequest request, HttpServletResponse response) 
throws Exception {
        //1.引入jasper文件
        Resource resource = new ClassPathResource("templates/main.jasper");
        FileInputStream fis = new FileInputStream(resource.getFile());
        //2.创建JasperPrint,向jasper文件中填充数据
        ServletOutputStream os = response.getOutputStream();
        try {
            HashMap parameters = new HashMap();
            Resource subResource = new ClassPathResource("templates/sub-group.jasper");
            parameters.put("subpath",subResource.getFile().getPath());
            parameters.put("sublist",getUserList());
            parameters.put("sublist",getUserList());
            JRBeanCollectionDataSource ds = new
JRBeanCollectionDataSource(getUserList());
            JasperPrint print = JasperFillManager.fillReport(fis, parameters,new
JREmptyDataSource());
            //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 条评论
热度
最新
推荐阅读
目录
  • 4 父子报表
    • 4.1 概述
      • 4.2 制作父报表
        • 4.3 制作子报表
          • 4.4 参数传递
          相关产品与服务
          腾讯云 BI
          腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档