EasyExcel模板填充遇到的一些坑

tech2025-04-26  5

文章目录

前言一、easyExcel是什么?二、使用步骤1.引入库2.Excel文件模板与pom配置3.代码 总结


前言

最近公司有个需求需要使用到EasyExcel的模板填充功能,使用过程中遇到了本地环境调试和打包上传服务器发布后失效的一些坑,这里记录一下,希望对遇到这些问题的人有所帮助。

一、easyExcel是什么?

废不多说直接上干货,对于暂时不太了解的童鞋可以参考官方文档,链接:easyExcel官网入口

二、使用步骤

1.引入库

代码如下:

<!--pom中引入jar--> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.1.6</version> </dependency>

2.Excel文件模板与pom配置

如下:

Excel文件模板 pom配置(该配置主要针对maven项目打包后会把文件进行编码,此处配置过滤掉编码


3.代码

try { //此处getResourceAsStream 用于获取服务器打包后的Excel模板文件流; //如果采用getPath方法获取文件地址本地ieda环境可以获取到,上传到服务器后会失效。采用流可以都生效,具体原因暂未仔细查看。有兴趣的童鞋可以自己去尝试! InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("templates/XXXX.xlsx"); //String path = this.getClass().getClassLoader().getResource("templates/XXXX.xlsx").getPath(); //读取Excel 根据指定模板导出 ExcelWriter excelWriter = EasyExcel.write(ExcelUtils.getOutputStream("XXXX",httpServletResponse)).withTemplate(resourceAsStream).build(); //ExcelWriter excelWriter = EasyExcel.write(ExcelUtils.getOutputStream("XXXX",httpServletResponse)).withTemplate(path).build(); WriteSheet writeSheet = EasyExcel.writerSheet().build(); //直接写入Excel数据(list是我查询并需导出的数据,并且里面的字段和excel需要导出的字段对应) excelWriter.fill(list, writeSheet); excelWriter.finish(); } catch (Exception e) { throw e; } //此段代码是工具类ExcelUtils中的 用于输出Excel流 public static OutputStream getOutputStream(String fileName, HttpServletResponse response) { try { fileName = URLEncoder.encode(fileName, "UTF-8"); response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf8"); response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ".xls"); response.setHeader("Pragma", "public"); response.setHeader("Cache-Control", "no-store"); response.addHeader("Cache-Control", "max-age=0"); return response.getOutputStream(); } catch (IOException e) { log.error("导出excel表格失败", e); } }

总结

EasyExcel虽然已经出来很久了,但是往往都是直接调用别人封装好的接口,自己去调试的机会比较少,这里遇到了相关问题,在这里记录一下,一点点成长。
最新回复(0)