manbetx体育播客旗下品牌:|||||

全国咨询/投诉热线:400-618-4000

Jasper+jaspersoftStudio导出用户列表数据教程

更新时间:2020年07月22日15时53分 来源:manbetx体育播客 浏览次数:

场景说明

在使用Jasper+jaspersoftStudio导出用户列表数据导出(如下图)是比较简单的,就是把用户列表数据,一个List集合放到 JRBeanCollectionDataSource中即可。

Jasper+jaspersoftStudio01

但是如果有多个List集合需要导出呢,这个应该怎么办?比如:一个用户的集合List,还有一个统计报表(也需要一个List集合数据)

Jasper+jaspersoftStudio02
Jasper+jaspersoftStudio03

实现思路

需要用到子数据集,如果多出几个List,就创建多少个子数据集Dataset

·动手实现

·制作模板

第一步:新建一个Jasper Report模板,选择 Blank A4 (A4纸大小的模板),然后 Next 命名为userList.jrxml.

Jasper+jaspersoftStudio04


第二步:删除无用的Band,只留 Title 、Colunn Header、Detail、Summary

Jasper+jaspersoftStudio04


第三步:创建Filed和parameter

①、创建Filed,这几个Field用来导出用户列表的

Jasper+jaspersoftStudio06

②、创建parameter,名称是chartList,指定类型是ArrayList,这个参数是用来放图表中所需数据的

Jasper+jaspersoftStudio07

第四步:创建子数据集

Jasper+jaspersoftStudio08

Jasper+jaspersoftStudio09

Jasper+jaspersoftStudio10

Jasper+jaspersoftStudio11


第五步:在模板上拖拽用户列表数据,注意指定中文名称

Jasper+jaspersoftStudio12


第六步:在模板上拖拽图表

Jasper+jaspersoftStudio13

Jasper+jaspersoftStudio14
Jasper+jaspersoftStudio15

注意:我这里的是否显示图例改成了false,不然导出会失败

Jasper+jaspersoftStudio16

代码导出

准备两个实体类:

用来导出用户列表

package com.itheima.pojo;
import lombok.Data;
/**
 * 员工
 */
@Data
public class People {
    private Long id;
    private String userName; //员工名
    private String phone;    //手机号
    private String province; //省份名
    private String hireDateStr; // 入职日期
    public People(Long id, String userName, String phone, String province, String hireDateStr) {
        this.id = id;
        this.userName = userName;
        this.phone = phone;
        this.province = province;
        this.hireDateStr = hireDateStr;
    }
}


用来导出图表

package com.itheima.pojo;
import lombok.Data;
@Data
public class PeopleCount {
    private String provinceName; //省份名
    private Integer count; //数量
    public PeopleCount(String provinceName, Integer count) {
        this.provinceName = provinceName;
        this.count = count;
    }
}

代码实现PDF导出

package com.itheima.test;
import com.itheima.pojo.People;
import com.itheima.pojo.PeopleCount;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.*;
public class PdfDemo {
    public static  void main(String[] args) throws Exception{
        //        1、获取模板文件
        String templateFile = "d://userList.jasper";
        //       2、准备数据
        //          2.1 列表数据
        JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(getListData());
        //         2.2图表数据
        Map params = new HashMap();
        params.put("chartList",getChartListData());
        JasperPrint jasperPrint = JasperFillManager.fillReport(new FileInputStream(templateFile), params,dataSource);
        JasperExportManager.exportReportToPdfStream(jasperPrint,new FileOutputStream("d://用户列表数据.pdf"));
    }
    public static List<People> getListData(){
        List<People> peopleList = new ArrayList<>();
        peopleList.add(new People(1L, "大一","13800000001","北京市","2001-01-01"));
        peopleList.add(new People(2L, "不二","13800000002","河北省","2002-01-02"));
        peopleList.add(new People(3L, "张三","13800000003","河北省","2003-03-03"));
        peopleList.add(new People(4L, "李四","13800000004","河北省","2004-02-04"));
        peopleList.add(new People(5L, "王五","13800000005","河北省","2005-03-05"));
        peopleList.add(new People(6L, "赵六","13800000006","河北省","2006-04-06"));
        peopleList.add(new People(7L, "沈七","13800000007","河北省","2007-06-07"));
        peopleList.add(new People(8L, "酒八","13800000008","河北省","2008-07-08"));
        peopleList.add(new People(9L, "第九","13800000009","山东省","2009-03-09"));
        peopleList.add(new People(10L, "石十","13800000010","山东省","2010-07-10"));
        peopleList.add(new People(11L, "肖十一","13800000011", "山东省","2011-12-11"));
        peopleList.add(new People(12L, "星十二","13800000012", "山东省","2012-05-12"));
        peopleList.add(new People(13L, "钗十三","13800000013", "山东省","2013-06-13"));
        peopleList.add(new People(14L, "贾十四","13800000014", "山东省","2014-06-14"));
        peopleList.add(new People(15L, "甄世武","13800000015", "山东省","2015-06-15"));
        return peopleList;
    }
    public static List<PeopleCount> getChartListData(){
        List<PeopleCount> peopleCountList = new ArrayList<>();
        peopleCountList.add(new PeopleCount("北京市",100));
        peopleCountList.add(new PeopleCount("河北省",200));
        peopleCountList.add(new PeopleCount("山东省",220));
        peopleCountList.add(new PeopleCount("河南省",230));
        return peopleCountList;
    }
}

效果如下:

Jasper+jaspersoftStudio17

Jasper+jaspersoftStudio18


猜你喜欢

什么是枚举?没有枚举之前,怎么做的?

javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

uids

北京校区

    14天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    8天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    0天免费试学

    基础班入门课程限时免费

    申请试学名额

    12天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    10天免费试学

    基础班入门课程限时免费

    申请试学名额