当前位置: 首页 > news >正文

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

目录

    • 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-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>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • NVIDIA 完全过渡到开源 GPU 内核模块
  • PHP上门按摩专业版防东郊到家系统源码小程序
  • 深入浅出WebRTC—NACK
  • 【.NET全栈】ASP.NET开发Web应用——计算器
  • 【PyTorch】图像二分类项目
  • 【AI工具基础】—Kylin(一)
  • 【人工智能大模型】文心一言介绍以及基本使用指令
  • ActiViz实战:ActiViz中的自己实现鼠标双击事件
  • Bootloader
  • layui 让table里的下拉框不被遮挡
  • C#+layui+echarts实现动态生成折线图
  • Jvm基础(一)
  • uniapp开发钉钉小程序流程
  • 从零开始学习cartographer源码 | 02.cartographer_ros—node_main.cc
  • 智能听诊器:宠物健康监测的革新者
  • Google 是如何开发 Web 框架的
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • angular学习第一篇-----环境搭建
  • go语言学习初探(一)
  • IDEA 插件开发入门教程
  • iOS | NSProxy
  • java 多线程基础, 我觉得还是有必要看看的
  • Java 网络编程(2):UDP 的使用
  • JavaScript设计模式系列一:工厂模式
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Promise初体验
  • webpack入门学习手记(二)
  • 电商搜索引擎的架构设计和性能优化
  • 聚簇索引和非聚簇索引
  • 坑!为什么View.startAnimation不起作用?
  • 漂亮刷新控件-iOS
  • 前端临床手札——文件上传
  • 实现简单的正则表达式引擎
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • #git 撤消对文件的更改
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (152)时序收敛--->(02)时序收敛二
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (每日一问)操作系统:常见的 Linux 指令详解
  • (四)opengl函数加载和错误处理
  • (算法二)滑动窗口
  • ***监测系统的构建(chkrootkit )
  • **python多态
  • .bat文件调用java类的main方法
  • .NET 4.0中的泛型协变和反变
  • .net CHARTING图表控件下载地址
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET delegate 委托 、 Event 事件
  • .NET6 命令行启动及发布单个Exe文件
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限