EasyExcel的简单导出

article/2025/8/29 16:15:04

EasyExcel的简单导出

Controller层代码
@GetMapping("/download")
public void download(String name, HttpServletResponse response) {fileManager.download(name, response);
}
Service处理代码
public void download(String name, HttpServletResponse response) {try {String template_path = "E://template//模板文件.xlsx";if (!new File(template_path).exists()) {String message = "模板文件不存在,路径:" + template_path;log.error(message);throw new XException(message);}String strFileName = String.format("%s_导出文件.xlsx", name);//获取数据字段数据【这个根据自己需要获取到对应的数据,自己实现此方法】List<SysColDto> sysColDtos = getData();//构建填充excel单元格数据【需要将获取到的转换成SysColExcelDto(代码见后面),这个实体类见后面】List<SysColExcelDto> list = new ArrayList<>();for (SysColDto sysColDto : sysColDtos) {SysColExcelDto sysColExcelDto = new SysColExcelDto();sysColExcelDto.setModname(sysColDto.getModname());sysColExcelDto.setLname(sysColDto.getLname());sysColExcelDto.setCname(sysColDto.getCname());list.add(sysColExcelDto);}//自定义行风格handler【笔者这边用了一个自定义行风格handler(代码见后面),是为了实现框线,看每个人的需求决定使不使用】CustomRowStyleHandler customRowStyleHandler = new CustomRowStyleHandler(1, 9);response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");// 这里URLEncoder.encode可以防止中文乱码response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");response.setHeader("Content-Disposition", String.format("attachment; filename=\"%s\"", new String(strFileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1)));//填充excel【easyExcel提供了多种生成excel的方式,这边使用的是根据模板来填充模板中的数据doFill,模板中数据填充位置需要参考:https://easyexcel.opensource.alibaba.com/docs/current/quickstart/fill】EasyExcel.write(response.getOutputStream()).registerWriteHandler(customRowStyleHandler).withTemplate(template_path).sheet().doFill(list);} catch (IOException ex) {throw new XException(ex.getMessage());}}
SysColExcelDto.java类
  • 这是使用easyExcel提供的注解来标记字段填充行数,这种情况适用于自动生成,如果是填充excel(doFill方式)可以不用ExcelProperty注解标识,但是需要在模板中标记数据填充位置
  • 模板标记数据填充位置标记如下,name和number对应的excel对象的字段名,自行修改即可
    在这里插入图片描述
/*** 书签导入excel对象*/
@Data
public class SysColExcelDto {@ExcelProperty("对应信息采集组")private String modname;@ExcelProperty("对应采集栏目名称")private String lname;@ExcelProperty("对应系统中文字段")private String cname;
}
CustomRowStyleHandler.java
  • 这是自定义行风格处理器,是因为某些情况下需要加格式,看需求
  • 除了RowWriteHandler 可以实现,还有CellWriteHandler可以实现,顾名思义是处理单元格
/*** excel自定义行风格处理器*/
public class CustomRowStyleHandler implements RowWriteHandler {//单元格起始下标private Integer cellIndexStart;//单元格结束下标private Integer cellIndexEnd;public CustomRowStyleHandler(Integer cellIndexStart, Integer cellIndexEnd) {this.cellIndexStart = cellIndexStart;this.cellIndexEnd = cellIndexEnd;}public CustomRowStyleHandler() {}@Overridepublic void afterRowDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Integer relativeRowIndex, Boolean isHead) {Sheet sheet = writeSheetHolder.getSheet();Workbook workbook = sheet.getWorkbook();CellStyle cellStyle = workbook.createCellStyle();//设置边框样式cellStyle.setBorderLeft(BorderStyle.THIN);//细实线cellStyle.setBorderTop(BorderStyle.THIN);cellStyle.setBorderRight(BorderStyle.THIN);cellStyle.setBorderBottom(BorderStyle.THIN);for (Integer i = cellIndexStart; i <= cellIndexEnd; i++) {Cell cell = row.getCell(i);cell.setCellStyle(cellStyle);}}
}

http://chatgpt.dhexx.cn/article/qy1uQJFj.shtml

相关文章

DbVisualizer 导出大数据

工具: DbVisualizer Pro 10.0.20 、OS: Windows 10、导出目标&#xff1a;Excel2007(.xlsx)最大支持1048576行、更新时间&#xff1a;2021/1/6 1.执行一个sql查询&#xff0c;使用工具Export导出 2.在导出页面&#xff0c;选择xls&#xff0c;一直选next直到Export&#xff08…

mysql数据库导出

进入数据库服务器linux操作界面2.导出数据库表结构&#xff08;不包含数据&#xff09; 导库语句&#xff1a; mysqldump -h localhost -uroot -ppassword1# -d atsdb > /data/atsdb_20220908_test.sql 参数解释&#xff1a; -h localhost 表示安装在本地的mysql数据…

ARCGIS地图导出问题

ARCGIS地图导出问题 问题来喽&#xff01;我们如何做一幅信息齐全的地图并且将其导出呢&#xff1f; 图1-1标准地图样式 首先&#xff0c;我们需要做出一张漂亮的地图 &#xff01; 第一步&#xff1a;添加数据。如图2-1&#xff0c;点击布局&#xff0c;添加数据&#xff…

mysql 导出表数据

mysql怎么导出表 Mysql导出表方法如下&#xff0c;可用第三方工具NavicatforMysql。 1、登录到指定的Mysql数据库。 2、在指定的数据库下找到“表”&#xff0c;然后在右侧找到要导出的表名。 3、在表名处点击鼠标右键&#xff0c;选择“导出向导”。 4、选择要导出的格式&…

数据导出流程设计

1. 需求描述 数据导出成excel、csv等格式文件是一个非常常见的需求&#xff0c;普通的导出可能是直接请求后端接口获取数据然后生成对应的文件并执行下载&#xff0c;这种导出方式会存在很多问题&#xff0c;因此根据公司系统的导出总结一下新的导出流程。 2. 技术方案 流程图…

文件导出与下载(Excel,Zip)等几种方式

文件下载的几种办法&#xff1a; 1、导出数据为某种格式 ​ 这种的话常见的也就是导出为excel格式&#xff0c;个人通常有两种解决办法&#xff1a; a. 先创建文件&#xff0c;把数据写入文件中去&#xff0c;当然文件也是保存在电脑某个地方的&#xff0c;再读取该文件&…

java导出excel的两种方式

博主简介&#xff1a;原互联网大厂tencent员工&#xff0c;网安巨头Venustech员工&#xff0c;阿里云开发社区专家博主&#xff0c;微信公众号java基础笔记优质创作者&#xff0c;csdn优质创作博主&#xff0c;创业者&#xff0c;知识共享者,欢迎关注&#xff0c;点赞&#xff…

数据的导出方法

实现页面数据的导出 怎样实现网页数据的导出到本地&#xff0c;这里实现的是以Excel表格的格式导入到本地. 比如这样的个表格我怎样实现把数据导出放到一个到Excel表格中保存到本地&#xff0c; 从下面划红线部分可以看出这里的数据是通过三个下拉框的查询条件得到的数据&…

Pr 入门系列之十四:导出

视频工作流程中的最后一步就是导出。 Pr 中&#xff0c;可以方便地导出序列或剪辑&#xff0c;发送给他人&#xff0c;分享到社交媒体渠道&#xff0c;或者创建 DCP&#xff08;数字电影包&#xff09;文件用于影院分发。 ◆ ◆ ◆ 导出的一般流程 1、首先&#xff0c;在时间…

正态分布

正态分布 我们来对某一个年级做一项调查&#xff0c;看一看这个年级到底有多巨。于是&#xff0c;他们统计了每个同学一周刷题的时间。得到的结果如下&#xff1a; 可以看出&#xff0c;大多数人每周都有7-8个小时做题&#xff0c;有少部分蒟蒻(比如我)每周只有1-3个小时做题&…

广义pareto分布_帕累托分布广义帕累托分布

PDF、PMF、CDF 1. 概念解释 PDF:概率密度函数(probability density function), 在数学中,连续型随机变量的概率密度函数(在不至于混淆时可以简称为密度函数)是一个描述这个随机变量的输出值,在某个确定的取值点附近的可能性的函数。 PMF:概率质量函数(probability mass fun…

离散均匀分布

离散均匀分布 n 个值中的每一个具有相等的概率 1/ n 截图来源&#xff1a;Discrete Uniform Distribution 例子&#xff1a; 投掷一个骰子6个值中每个值出现的概率为 1 / 6 1/6 1/6 投掷两个骰子出现的两值之和&#xff0c;结果分布不再均匀&#xff0c;因为并非所有和的概率都…

平均分布

转载请注明出处&#xff1a;http://blog.csdn.net/liu_sn/article/details/79333368 今天遇到本很好玩的书&#xff0c;《世界是随机的:大数据时代的概率统计学》&#xff0c;在讲分布的时候作者说&#xff1a;概率分布就是概率论中的小九九。很有意思&#xff0c;看了之后确实…

边缘分布

什么是边缘分布函数&#xff0c;有那些性质 设 F ( x , y ) F(x,y) F(x,y)为随机变量 ( X , Y ) (X,Y) (X,Y)的分布函数&#xff0c;则 F ( x , y ) P { X ≤ x , Y ≤ y } F(x,y)P\{X \le x,Y \le y\} F(x,y)P{X≤x,Y≤y} 令 y → ∞ y \rightarrow \infty y→∞&#xff…

度分布的概念及形状

一、度分布的概念 把网络中节点的度按从小到大排序&#xff0c;从而统计得到度为k的节点占整个网络节点数的比例怕p k _k k​。例如下图&#xff1a; 从概率统计的角度看&#xff0c;p k _k k​也可以视为网络中一个随机选择的节点的度为k的概率&#xff0c;这就是度分布的概…

正确理解泊松分布

很多人在上概率论这门课的时候就没搞明白过泊松分布到底是怎么回事&#xff0c;至少我就是如此。虽然那个时候大家都会背“当试验的次数趋于无穷大&#xff0c;而乘积np固定时&#xff0c;二项分布收敛于泊松分布”&#xff0c;大部分的教科书上也都会给出这个收敛过程的数学推…

白话解释正态分布

复习一个统计学方面的课题&#xff0c;想找些资料看看&#xff0c;结果发现&#xff0c;就算是最基本的一些统计学概念&#xff0c;能找到的中文资料&#xff0c;读起来都是这么的佶屈聱牙&#xff0c;似乎都是从教科书里拷贝几个名词解释给放到一起&#xff0c;就算是一篇文章…

常用分布函数

0-1分布 设随机变量X只可能取0与1两个值&#xff0c;分布律为 则称X服从以p为参数的0-1分布 即 X 0 1 P 1-p p 用于描述: 对新生儿性别进行登记&#xff1b;检查产品质量是否合格&#xff1b;某车间的电力消耗是否超负荷 二项分布 设随机变量X只可能取0和1两个值&…

[R语言]正态分布

目录 分布 连续型变量的分布 正态分布 正态分布的推导 正态分布密度曲线 dnorm 正态分布的概率计算 正态分布累积曲线 总体分位数和尾概率 正态分布案例之一 R语言正态分布函数 正态分布相应的概率计算 正态分布的检验 shapiro.test()函数 Kolmogorov-Smirnov连续…

概率分布汇总

概率分布、总体分布、抽样分布&#xff0c;一开始很容易搞混&#xff0c;还以为是同一个理论&#xff0c;不同的概念&#xff0c;毕竟都是分布&#xff0c;又都是统计学里面的概率。今天就来理解理解这个东西吧。 概率分布是指随机变量的各取值与该取值对应的概率之间呈现的规…