EasyExcel 学习之 导出 “WPS 表格在试图打开文件时遇到错误”

目录

    • [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 # 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
xml 复制代码
<dependency>
	<groupId>org.apache.logging.log4j</groupId>
	<artifactId>log4j-api</artifactId>
	<version>2.21.1</version>
	<scope>compile</scope>
</dependency>

相关推荐
怒放吧德德5 小时前
Netty 4.2 入门指南:从概念到第一个程序
java·后端·netty
雨中飘荡的记忆7 小时前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
心之语歌9 小时前
基于注解+拦截器的API动态路由实现方案
java·后端
华仔啊10 小时前
Stream 代码越写越难看?JDFrame 让 Java 逻辑回归优雅
java·后端
ray_liang11 小时前
用六边形架构与整洁架构对比是伪命题?
java·架构
Ray Liang12 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
Java水解12 小时前
Java 中间件:Dubbo 服务降级(Mock 机制)
java·后端
SimonKing16 小时前
OpenCode AI辅助编程,不一样的编程思路,不写一行代码
java·后端·程序员
FastBean16 小时前
Jackson View Extension Spring Boot Starter
java·后端
Seven9717 小时前
剑指offer-79、最⻓不含重复字符的⼦字符串
java