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

1. 版本

版本
org.springframework.boot:spring-boot-starter-parent2.0.8.RELEASE
com.alibaba:easyexcel4.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图片、音频、视频等二进制文件
documentXML文档
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>

### WPS 打开文件乱码解决方案 当使用WPS打开文件遇到乱码问题,通常是因为文件的内容编码格式与WPS默认设置不符。以下是几种有效的解决办法: #### 删除内容格式法 通过清除原有格式并重新应用标准格式来解决问题。具体操作是在WPS打开文档后尝试移除所有样式和格式化选项,这有助于消除由于特殊字符集引起的显示错误[^1]。 #### 转换文档格式法 对于难以直接读取的文件,可以先将其另存为纯文本(TXT)格式,然后再导入到WPS中保存为DOC/DOCX格式。这种方法能够去除可能干扰正常解析的各种复杂标记和元数据,从而避免乱码现象的发生[^5]。 #### 更改字体映射表 如果上述两种方法仍无法改善情况,则可能是特定于某些亚洲语言或其他非ASCII字符集的问题。此可以在WPS的文字处理程序内部调整字体替换规则或者手动指定适合当前文档的语言环境及相应字库[^2]。 #### 使用OCR技术 针对PDF等图像型电子档材料造成的乱码状况,建议利用光学字符识别(OCR)工具来进行扫描转换。这类应用程序不仅支持基本的文字提取功能,还具备一定的纠错能力,能有效提高最终输出的质量[^4]。 ```python # Python示例代码用于演示如何批量修改文件编码至UTF-8 import os def convert_encoding_to_utf8(file_path, output_dir): with open(file_path, 'r', encoding='latin1') as file: content = file.read() new_file_name = os.path.join(output_dir, os.path.basename(file_path)) with open(new_file_name, 'w', encoding='utf-8') as utf8_file: utf8_file.write(content) convert_encoding_to_utf8('example.doc', './output/') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值