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>

相关推荐
wuqingshun3141598 小时前
什么是责任链模式,一般用在什么场景?
java·责任链模式
:-)9 小时前
算法-归并排序
java·开发语言·数据结构·算法·排序算法
wuqingshun3141599 小时前
说一下消息队列的模型有哪些?
java
fīɡЙtīиɡ ℡10 小时前
布隆过滤器
java
yaoxin52112310 小时前
462. Java 反射 - 获取声明类与封闭类
java·开发语言·python
wuqingshun31415912 小时前
MYSQL的乐观锁和悲观锁是什么?
java
唐青枫13 小时前
Java SLF4J 实战指南:从日志门面到 Logback、MDC 和链路追踪
java
jvmind_dev14 小时前
Java GC 实战指南(番外篇):被忽视的隐形杀手 —— Class Unloading 如何拖垮 GC
java·后端
An_s14 小时前
机器学习python之识别图中物品信息
java·linux·开发语言
AIGS00114 小时前
跨越语义鸿沟:企业本体语义平台的构建与落地
java·人工智能·python·机器学习·人工智能ai大模型应用