SpringBoot结合easypoi.excel,实现数据导出Excel

大多数业务项目中必然会遇到的一个需求,导出数据文件---Excel。

这里简单贴一下自己开发使用的方式方法,抛砖引玉。

也可小白直接大胆食用。

功能Maven依赖:

<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.5.0</version>
</dependency>
<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-web</artifactId><version>4.5.0</version>
</dependency>
<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-annotation</artifactId><version>4.5.0</version>
</dependency>

 业务入口controller,这里很简单

@GetMapping("/exportApply")public void exportApply(BusBasicFlowQuery query, HttpServletResponse response,@RequestHeader(required = false) String lang) throws IOException {query.setSize(20000);// query:这里就是个查询条件,根据个人业务实操就行// 这里就是根据业务需求查询出想要导出的数据集合信息// 重点说明一下:Bd3OrderExcel里面包好你要导出的表格列说明List<Bd3OrderExcel> bd3OrderExcelList = busBasicFlowService.exportApply(query, lang);ExportParams exportParams = new ExportParams();ExcelUtils.exportExcel(response, "北三卡申请", bd3OrderExcelList, Bd3OrderExcel.class, exportParams);}

重点说明一下Bd3OrderExcel,这个类注明的导出表格字段名称、顺序,宽度等。

package com.rdss.bus.model.excel;import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;import java.time.LocalDateTime;@Data
public class Bd3OrderExcel {private Integer id;/*** 申请人身份证号*/@Excel(name = "申请人姓名",width = 30.0)private String operatorName;/*** 申请时间*/@Excel(name = "申请时间",format = "yyyy-MM-dd HH:mm:ss", databaseFormat="yyyy-MM-dd HH:mm:ss" ,width = 30.0)private LocalDateTime applyTime;/*** 申请原因*/@Excel(name = "申请原因",width = 20.0)private String remark;/*** 申请人手机号*/@Excel(name = "申请人手机号",width = 20.0)private String operatorMobile;/*** 申请人身份证号*/@Excel(name = "申请人身份证号",width = 30.0)private String operatorIdcardNum;/*** 申请人邮箱*/@Excel(name = "申请人邮箱",width = 30.0)private String operatorEmail;/*** 申请人机构*/@Excel(name = "申请人机构",width = 30.0)private String operatorOrgName;/*** 审批结果(0-审核中,1-通过,2-不通过*/@Excel(name = "一级审批状态",dict = "approval_result",width = 15.0)private String approveResult_first;/*** 审批人姓名*/@Excel(name = "一级审批人姓名",width = 30.0)private String approveUserName_first;
}

导出封装工具类:

import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import com.rdss.bus.service.handler.DictHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;/*** excel工具类*/
@Slf4j
public class ExcelUtils {private ExcelUtils(){}@Autowiredprivate static DictHandler dictHandler;/*** Excel导出** @param response      response* @param fileName      文件名* @param list          数据List* @param pojoClass     对象Class*/public static void exportExcel(HttpServletResponse response, String fileName, Collection<?> list, Class<?> pojoClass, ExportParams exportParams ) throws IOException {exportParams.setStyle(ExcelStyleUtil.class);Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list);response.setCharacterEncoding("UTF-8");response.setHeader("content-Type", "application/vnd.ms-excel");response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xls");ServletOutputStream out = response.getOutputStream();workbook.write(out);out.flush();}/*** Excel导出,先sourceList转换成List<targetClass>,再导出** @param response      response* @param fileName      文件名* @param sourceList    原数据List* @param targetClass   目标对象Class*/public static void exportExcelToTarget(HttpServletResponse response, String fileName, Collection<?> sourceList,Class<?> targetClass) throws IllegalAccessException, InstantiationException, IOException {List<Object> targetList = new ArrayList<>(sourceList.size());for(Object source : sourceList){Object target = targetClass.newInstance();BeanUtils.copyProperties(source, target);targetList.add(target);}exportExcel(response, fileName, targetList, targetClass, new ExportParams());}
}

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

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

相关文章

安卓嘀嗒清单v7.2.2.2高级版

软件介绍 TickTick是一款轻便高效的任务管理、日程管理&#xff08;GTD&#xff09;和时间管理应用&#xff0c;配备强大的记事和提醒功能。你可以在手机、平板、网页等多达11个平台上使用滴答清单记录大小事务、制定工作计划、整理购物清单、设置生日提醒&#xff0c;甚至安排…

分布式相关理论详解

目录 1.绪论 2.什么是分布式系统&#xff0c;和集群的区别 3.CAP理论 3.1 什么是CAP理论 3.2 一致性 3.2.1 计算机的一致性说明 1.事务中的一致性 2.并发场景下的一致性 3.分布式场景下的一致性 3.2.2 一致性分类 3.2.3 强一致性 1.线性一致性 a) 定义 a) Raft算法…

C语言 | Leetcode C语言题解之第290题单词规律

题目&#xff1a; 题解&#xff1a; typedef struct node_t {char *key;char *value;struct node_t* pnext; }NODE_T;typedef struct hash_t {NODE_T** hash_list;int size; }HASH_T;HASH_T *hash_init(int size) {HASH_T *hash (HASH_T *)malloc(sizeof(HASH_T));if(NULL h…

蚂蚁集团Android一面凉经(2024)

蚂蚁集团Android一面凉经(2024) 笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《蚂蚁集团Android一面凉经(2024)》。 面试职位: 蚂蚁集团-Android/iOS开发工程师-支…

documents4j 将word转pdf文件,本地(Windows)测试没问题,部署到服务器(centos)报错

问题 报错如下&#xff1a; 代码 首先要保证你的Java代码没问题&#xff0c;可以参考下面代码 maven依赖 <!--documents4j--> <dependency><groupId>com.documents4j</groupId><artifactId>documents4j-local</artifactId><versi…

java之继承

继承&#xff08;Inheritance&#xff09;&#xff1a;一个类可以继承另一个类的属性和方法&#xff08;不支持多继承&#xff09;&#xff0c;这个被继承的类称为父类&#xff08;或超类、基类&#xff09;&#xff0c;继承它的类称为子类&#xff08;或派生类&#xff09;。 …

唯众物联网(IOT)全功能综合实训教学解决方案

一、引言 在信息技术日新月异的今天&#xff0c;物联网&#xff08;IoT&#xff09;作为推动数字化转型的关键力量&#xff0c;其触角已延伸至我们生活的方方面面&#xff0c;深刻地重塑了工作模式、生活习惯乃至社会结构的每一个角落。面对这一前所未有的变革浪潮&#xff0c…

CVE-2024-39700 (CVSS 9.9):JupyterLab 模板中存在严重漏洞

在广泛使用的 JupyterLab 扩展模板中发现了一个严重漏洞&#xff0c;编号为CVE-2024-39700 。此漏洞可能使攻击者能够在受影响的系统上远程执行代码&#xff0c;从而可能导致大范围入侵和数据泄露。 该漏洞源于在扩展创建过程中选择“测试”选项时自动生成“update-integratio…

InternLM学习笔记

入门岛 1. Linux基础知识 2. Python 基础知识 from collections import Countertext """ Got this panda plush toy for my daughters birthday, who loves it and takes it everywhere. Its soft and super cute, and its face has a friendly look. Its a …

【redis】一致性hash算法和hash槽

普通hash取模 直接hash(key)%N , N为机器的数量&#xff0c;但不利于集器扩容或者缩容 一致性hash算法和hash槽 一致性hash算法是在redis 分片中使用&#xff0c;hash槽在redis cluster&#xff08;集群&#xff09;中使用 Redis一致性hash&#xff1a;Redis一致性hash是为…

Idea如何查看Maven依赖树

1、使用idea自带的功能查看依赖树 2、使用Maven Helper插件 https://zhuanlan.zhihu.com/p/699663369

指针数组模拟二维数组

有任何不懂的问题可以评论区留言&#xff0c;能力范围内都会一一回答 指针数组&#xff0c;是数组&#xff0c;但是它的元素都是指针。 #define _CRT_SECURE_NO_WARNING #include <stdio.h> int main(void) {int a 3;int b 4;int c 5;int* arr[3] { &a,&b,…

Springboot集成Elasticsearch High Level REST Client实现增删改查实战

获取源码&#x1f6a9; 需要完整代码资料&#xff0c;请一键三连后评论区留下邮箱&#xff0c;安排发送&#xff01;&#xff01;&#xff01;&#x1f916; 什么是High Level REST Client&#xff1f; Elasticsearch 的 High Level REST Client 是一个用于与 Elasticsearch…

2024安全大模型技术与市场研究报告

大模型驱动的AIGC引发技术革命&#xff0c;国资委强调国企需加大AI投入。大模型解决网络安全行业攻防不对等问题&#xff0c;国内外企业纷纷推出基于大模型的网络安全产品&#xff0c;AI将改变网络安全产品格局。 自 2022 年底开始&#xff0c;以 LLM(大语言模型&#xff0c;简…

python-实践简单的贪食蛇游戏

通过python简单复现贪食蛇游戏。 使用到的库函数&#xff1a; import pygame import time import random 游戏源码&#xff1a; import pygame import time import randompygame.init()white (255, 255, 255) yellow (255, 255, 102) black (0, 0, 0) red (213, 50, 80…

{Spring Boot 原理篇} Spring Boot自动装配原理

SpringBootApplication 1&#xff0c;Spring Boot 应用启动&#xff0c;SpringBootApplication标注的类就是启动类&#xff0c;它去实现配置类中的Bean的自动装配 SpringBootApplication public class SpringbootRedis01Application {public static void main(String[] args)…

计算word文件打印页数 VBA实现

目录 场景复现环境说明实现原理计算当前文件夹下所有word文件页数总和利用递归计算当前文件夹所有work文件页面数量几个BUG计算结果软件报价后话 场景复现 最近需要帮我弟打印高考资料&#xff0c;搜集完资料去网上打印&#xff0c;商家发出了这个计算页数的界面。我就好奇怎么…

vscode回退不显示了,不方便操作

一、后退前进按钮 顶部显示&#xff0c;方便调试 <—— ——> 文件-> 首选项 -> 设置->commandcenter->勾选 Window: Title Bar Style->custom 将native —>custom

【Tomcat】Mac M3 Pro安装Tomcat7

文章目录 下载配置环境变量修改权限启动和关闭 下载 官网&#xff1a;https://tomcat.apache.org/ cd ~/Library tar -zxvf /Users/用户名/Downloads/apache-tomcat-7.0.99.tar.gz mv apache-tomcat-7.0.99 ~/Library/tomcat配置环境变量 vi ~/.bash_profileexport TOMCAT…

Oracle核心进程详解并kill验证

Oracle核心进程详解并kill验证 文章目录 Oracle核心进程详解并kill验证一、说明二、核心进程详解2.1.PMON-进程监控进程2.2.SMON-系统监控进程2.3.DBWn-数据库块写入进程2.4. LGWR-日志写入器进程2.5. CKPT-检查点进程 三、Kill验证3.1.kill ckpt进程3.2.kill pmon进程3.3.kill…