先看再点赞,给自己一点思考的时间,微信搜索【果汁简历】公众号,获取更多内容。 本文 GitHub
https://github.com/juice-resume/java-programming.git 已收录,里面还有一线大厂整理的面试题,以及我的系列文章
工欲善其事必先利其器,果然有道理,之前经常做一些 Excel 的解析和写入,大家估计也对 jxl 和 poi 有所耳闻,操作起来那是一塌糊涂,需要了解里面的各种变量,然而这次我们使用的是阿里开源的 EasyExcel,5分钟搞定下载和上传解析。
我们写代码之前先说一下我们模拟的场景,我们需要使用 EasyExcel 实现文章的批量上传和下载。
- 访问 /template 可以下载要上传的模板
- 访问 /upload 把填写好的模板上传
- 访问 /download 下载之前上传的内容
话不多说直接上代码,文末可以获取全部代码。代码运行的环境是 Spring Boot,所以具体的 Spring Boot 搭建细节我们就不说了,直接从引入 EasyExcel 开始。
1.引入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.4</version>
</dependency>
2. 下载模板
如果需要上传 Excel,势必需要提前准备好模板,那么这点 EasyExcel 做的更简洁,我们直接上代码。定义一个 download 请求,设置 application/vnd.ms-excel 为了返回内容后直接可以作为 excel 文件下载。下面才是重点。
- EasyExcel.write 是设置具体需要映射的对象到返回的流
- EasyExcel.sheet 设置具体的 sheet 名字
- EasyExcel.doWrite 写入具体的内容,也是 write 里面对应的 Article 对象的列表。
EasyExcel
.write(response.getOutputStream(), Article.class)
.sheet("模板")
.doWrite(new ArrayList());
@GetMapping("tempalte")
public void tempalte(HttpServletResponse response) throws IOException {
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
String fileName = URLEncoder.encode("文章模板", "UTF-8");
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"