如何使用Jasper导出用户列表数据?

news2024/11/26 13:44:50

场景说明

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

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

实现思路

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

·动手实现

·制作模板

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

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

第三步:创建Filed和parameter

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

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

第四步:创建子数据集

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

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

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

代码导出

准备两个实体类:

用来导出用户列表

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;

}

}

效果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/153826.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用Python发邮件(附完整源代码)

目录 一、背景 1.1、前言 1.2、说明 二、SMTP协议 2.1、SMTP协议作用 2.2、SSL作用 三、步骤 3.1、开启QQ邮箱SMTP 四、代码 4.1、完整源代码 五、结果 5.1、代码运行结果 六、总结 6.1、总结 一、背景 1.1、前言 写了一个简陋的2023年12306自动化购票程序&…

微服务保护 - Sentinel

1.概念&#xff1a; 一&#xff1a;sentinel 介绍 随着微服务的流行&#xff0c;服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的轻量级流量控制产品&#xff0c;主要以流量为切入点&#xff0c;从流量控制、熔断降级、系统负载保护等多个维度来帮助…

黑马学ElasticSearch(六)

目录&#xff1a; &#xff08;1&#xff09;搜索结果处理-排序 &#xff08;2&#xff09;搜索结果处理-分页 &#xff08;3&#xff09;搜索结果处理-高亮 &#xff08;1&#xff09;搜索结果处理-排序 评分降序、价格升序查询 第二 第三 一旦进行了排序_score就没有值了 …

Qt 自定义流程图 diagram

Qt 自定义流程图 diagram前言程序执行效果程序源码下载图形视图框架成员介绍重写QGraphicsItem程序源码介绍重点代码前言 本文将对QGraphicsScene, QGraphicsView,QGraphicsItem这三个类进行简单介绍&#xff0c;并通过diagram流程图项目对自定义QGraphicsItem操作进行演示讲解…

Docker从无到有

随着各个软件的版本越来越多&#xff0c;软件开发、使用环境愈发复杂&#xff0c;Docker日益受到广泛应用。本文记录下从零开始了解、使用docker的各个步骤。 Docker有3个基本概念: Image&#xff0c;镜像。镜像就是系统的快照。静态。每个Image以<Repo Name>:<Tag …

求助:程序员得了结膜炎+干眼症怎么办?

大概是2022年12月初开始&#xff0c;我就感觉眼睛有看东西有点肿胀和模糊&#xff0c;还有就是总想眯眼。本来以为就是用眼过度导致的疲劳&#xff0c;想着周六周日好好休息一下应该就好了&#xff0c;但是没想到不仅没好还加重了。不得已去了医院求助医生。 我去的是杭州的浙…

TS:镜像构建过程中go下载第三方包失败-2023.1.8(已解决)

title: TS&#xff1a;镜像构建过程中go下载第三方包失败-2023.1.8(已解决) date: 2023-1-10 categories: Golang tags:Golang TS&#xff1a;镜像构建过程中go下载第三方包失败-2023.1.8(已解决) 注意&#xff1a;一定要注意项目代码里go版本和自己机器go版本是否一致&#x…

5.2中断系统中的设备树——Linux对中断处理的框架及代码流程简述

当发生中断时&#xff0c;CPU会跳到一个固定的地址去执行代码&#xff0c;这个固定的地址就被称为中断向量。 以ARM920T为例&#xff0c;它的中断向量默认是地址24&#xff08;0x18&#xff09;的地方。那么&#xff0c;就可以在这里放一条跳转指令。 一系列的跳转指令用来处…

基于配置系统和流水线的热更新方案

文章目录背景方案调研具体方案方案优缺点背景 最近我们要在一个新的 App 上增加热更新的能力&#xff0c;按照以往的设计思路&#xff0c;需要后台一起参与&#xff0c;并提供对应的接口&#xff0c;具体的接口如下&#xff1a; 接口参数返回值备注uploadBasePkgappVersion&a…

接口管理工具YApi怎么用?颜值高、易管理、超好用

众多接口管理工具如雨后春笋搬冒出。让人欣慰的是&#xff0c;有许多优秀作品来自国内&#xff0c;包含YApi和rap。看着中文的官网&#xff0c;熟悉的汉语&#xff0c;不禁让人暗爽。当然这也就带来另一个弊端&#xff0c;因为使用基数少&#xff0c;所以参考资料少。我们想学习…

Linux时间的获取与使用

Linux系统时间有两种。 &#xff08;1&#xff09;日历时间。该值是自协调世界时(UTC)1970年1月1日00:00:00这个特定时间以来所经过的秒数累计值。基本数据类型用time_t保存。最后通过转换才能得到我们平时所看到的24小时制或者12小时间制的时间。 &#xff08;2&#xff09;…

使用WSL获得Ubuntu系统环境

文章目录使用WSL获得Ubuntu系统环境为什么要用WSL什么是WSLWSL部署安装Windows Terminal软件使用WSL获得Ubuntu系统环境 为什么要用WSL WSL作为Windows10系统带来的全新特性&#xff0c;正在逐步颠覆开发人员既有的选择。 传统方式获取Linux操作系统环境&#xff0c;是安装完…

凯撒加密Caesar cipher

凯撒加密的由来凯撒加密正是凯撒大帝发明的&#xff0c;是一种古典的加密凯撒率军征服高卢&#xff0c;袭击日耳曼和不列颠&#xff0c;古罗马开启了走出意大利&#xff0c;征服全欧洲的征程仅用8年时间征服高卢后&#xff0c;凯撒率军越过卢比孔河&#xff0c;驱赶政敌&#x…

振弦采集模块参数配置工具的使用

振弦采集模块参数配置工具的使用 通常情况下&#xff0c;在计算机端对模块进行测试、读写时&#xff0c;可使用一些通用的免费工具完成&#xff0c;如基于 MODBUS 通讯协议的调试工具 MODSCAN、通用串口调试助手等&#xff0c; 这些工具可以通过网络搜索下载使用&#xff0c;在…

03【Response、ServletContext】

文章目录03【Response、ServletContext】一、HTTP响应概述1.1 什么是HTTP响应&#xff1a;1.2 响应信息的组成&#xff1a;1.2.1 响应行1.2.2 响应头1.2.3 响应体1.3 Http协议小结二、HttpServletResponse对象2.1 设置响应行2.2.1 设置响应状态码2.2.2 常见响应码1&#xff09;…

入选IDC报告,美创科技数据安全管理平台实力领跑

近日&#xff0c;国际权威研究咨询机构IDC发布《中国数据安全基础设施管理平台市场洞察&#xff0c;2022》报告。本次报告对行业用户以及技术提供商深入访谈&#xff0c;挑选出具有代表性的数据安全基础设施管理平台产品和方案&#xff0c;美创数据安全管理平台入选&#xff0c…

软件测试---概念篇

本文主要介绍软件测试相关的一些基础概念.主要内容包括 : 什么是需求 什么是bug 什么是测试用例 开发模型和测试模型 配置管理和软件测试 一 : 什么是需求 满足用户期望或正式规定文档&#xff08;合同、标准、规范&#xff09;所具有的条件和权能&#xff0c;包含用户需求和软…

【Kubernetes 企业项目实战】02、基于 Prometheus 和 K8s 构建智能化监控告警系统(中)

目录 一、安装和配置 node-exporter 1.1 node-exporter介绍&#xff1f; 1.2 安装 node-exporter 二、Prometheus server 安装和配置 2.1 创建 sa 账号&#xff0c;对 sa 做 rbac 授权 2.2 创建 prometheus 数据存储目录 2.3 安装 Prometheus server 服务 &#xff08;…

Python再入手-03

又过了半年,已经完全忘了当时8月份的python工作了。这半年,先是跑合同,然后张罗出海,完了又搞了两次验收,还做了两次汇报,开了无数的会,忙坏了。 现在,得重新张罗电磁这档子事儿了。下面记录下最近的操作。 1 打开编程环境。 都忘了怎么打开环境了,翻一下以前的博客…

Ant Design使用

目录官网在项目中使用下载引入方法1:全部引入方法2:按需引入-手动加载方法3:按需引入-自动加载组件Anchor作用&#xff1a;用于跳转到页面指定位置案例1-基础使用案例2-添加偏移量案例3-指定容器总结官网 Ant Design官网 在项目中使用 在react中使用Ant Design 下载 使用如…