目录
-
- [1. 版本](#1. 版本)
- [2. 现象](#2. 现象)
-
- [2.1. Postman 文件下载成功且 WPS 可以正常打开](#2.1. Postman 文件下载成功且 WPS 可以正常打开)
- [2.2. VUE 下载成功但 WPS 无法打开](#2.2. VUE 下载成功但 WPS 无法打开)
- [3. 原因:前端未指定 responseType](#3. 原因:前端未指定 responseType)
- [4. 常见问题](#4. 常见问题)
-
- [4.1. NoSuchMethodError](#4.1. NoSuchMethodError)
-
- [4.1.1. org.apache.logging.log4j.LogBuilder org.apache.logging.log4j.Logger.atTrace()](#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](#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
导出 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
xml
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.21.1</version>
<scope>compile</scope>
</dependency>