目录
- 1. 版本
- 2. 现象
- 2.1. Postman 文件下载成功且 WPS 可以正常打开
- 2.2. VUE 下载成功但 WPS 无法打开
- 3. 原因:前端未指定 responseType
- 4. 常见问题
- 4.1. NoSuchMethodError
- 4.1.1. org.apache.logging.log4j.LogBuilder org.apache.logging.log4j.Logger.atTrace()
- 4.1.2. Could not initialize class org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook
1. 版本
包 | 版本 |
---|---|
org.springframework.boot:spring-boot-starter-parent | 2.0.8.RELEASE |
com.alibaba:easyexcel | 4.0.0 |
特别注意:不同的 Springboot 版本可能现象不同,2.7.14 就是可以的。
2. 现象
EasyExcel # Issue
本人在使用 EasyExcel
导出 xls
文件后,通过 WPS
打开文件,呈现两种情况:
2.1. Postman 文件下载成功且 WPS 可以正常打开
一般情况下导出下载只能通过 GET 方法触发,但是实际中前端可以通过一些代码逻辑模拟 GET 下载,即上图所示 POST 下载。
2.2. VUE 下载成功但 WPS 无法打开
3. 原因:前端未指定 responseType
在 Axios
中,responseType
是一个非常重要的配置项,它用于告诉 Axios
你期望从服务器接收到的响应数据类型。
常见的 responseType
值及其用途:
值 | 适用场景 | 备注 |
---|---|---|
json | (默认 )用于解析JSON数据 | |
blob | 下载文件,二进制数据 | 因为 Blob 对象可以被用来创建一个指向该文件内容的 URL,进而触发浏览器的下载行为或者在页面上展示文件内容 |
arraybuffer | 图片、音频、视频等二进制文件 | |
document | XML文档 | |
text | 纯文本数据 | |
stream | 流数据 |
4. 常见问题
4.1. NoSuchMethodError
4.1.1. org.apache.logging.log4j.LogBuilder org.apache.logging.log4j.Logger.atTrace()
4.1.2. Could not initialize class org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook
<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.21.1</version><scope>compile</scope>
</dependency>