码迷,mamicode.com
首页 > Web开发 > 详细

JasperReport 父子报表

时间:2021-06-15 17:44:00      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:top   double   就是   element   nts   接下来   ring   epo   java代码   

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

 

1、制作父报表,主要有两种

1) 父报表中需要显示数据,使用子报表弥补sudio设计的不足。

2) 父报表不需要显示数据,只是作为子报表的载体,适用于复杂报表的设计。(接下来使用这种)

 

2、创建父报表

命名为: template5_parent.jrxml

技术图片

 

 

在Basic Elements拖拽Subreport到Detail 1

技术图片

 

 

选择template4_charts.jrxml,

技术图片

 

 点击完成。

 

 

3、父报表传递数据

在template5_parent上创建Parameters

名称为sublist, 类型为java.util.List

技术图片

 

 

4、子报表接收数据

技术图片

 

 

在Value Class,点击右边的浏览

技术图片

 

 

查找JRBeanCollectionDataSource

技术图片

 

 

new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{sublist})

 技术图片

 

 sublist就是父报表定义的Parameters。

 

创建Parameters,命名为subpath

技术图片

 

 

Expression填写$P{subpath}

技术图片

 

 然后分表编译模板tempate4_chart.jrxml, template5_parent.jrxml. 

编译后拷贝到程序中。

技术图片

 

 

5、Java代码编写

//父子报表
    @GetMapping("/jasper4_parent_child")
    public void jasper4_parent_child( HttpServletResponse response)
            throws Exception {
        List<StudentCount> studentList = new ArrayList<>();
        for (int i = 1; i <= 6; i++) {
            Random random = new Random();
            int count = ((Double) (random.nextDouble() * 10)).intValue();
            StudentCount s1 = new StudentCount();
            s1.setGrade("grade"+ i );
            s1.setNums(i * 20L + count);
            studentList.add(s1);
        }

        HashMap<String, Object> parameters = new HashMap<String, Object>();
        //子报表需要的数据
        parameters.put("sublist",studentList);
        //子报表路径
        Resource subResource = new ClassPathResource("templates/template4_charts.jasper");
        parameters.put("subpath",subResource.getFile().getPath());
        String templatePathParent = "templates/template5_parent.jasper";
        JasperReportUtil.exportToPdf(templatePathParent, parameters, studentList, response);
    }

  

 

6、效果图

访问: http://localhost:8080/jasper4_parent_child

技术图片

 

JasperReport 父子报表

标签:top   double   就是   element   nts   接下来   ring   epo   java代码   

原文地址:https://www.cnblogs.com/linlf03/p/14883085.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!