解决com.alibaba.excel.exception.ExcelGenerateException: Can not close IO.
我在使用easycel导出到zip包中时,出现了这个问题。各种文件输出时产生的问题其实大同小异
查看了一些网上的文章,还有github上关于此bug的issue,总算是理清并解决了。
解决方法一
主要原因是输出流过早关闭,导致执行 excelWriter.finish() 时会出错。
excelWriter是在我们创建输出表格的时候建立的对象,里面包含了IO对象;
正常单个导出的时候调用 finish() 才是正常关流,但是在输出到zip时我们采用了其它方式
workbook.write(zos); // 此方法也会关流,当第二次使用的时候会报异常
所以不用调用 finish() 方法就可以解决这个bug了
解决方法二
之前
// 直接用workbook.write(zos),
workbook.write(zos);
中间采用 ByteArrayOutputStream 解决
// workBook.write会指定关闭数据流,
// 直接用workbook.write(zos), 下次就会抛出zos已被关闭的异常,所以用ByteArrayOutputStream来拷贝一下。
ByteArrayOutputStream bos = new ByteArrayOutputStream(); // workbook写入bos
workbook.write(bos); // bos写入zos
bos.writeTo(zos);
解决方法三
如果前端页面响应时间过短,那就会断开连接,断开连接的话,响应流都没有了,肯定会在关流的时候报错啊(这个场景,就是我碰见的)
补充网络上其它解决方案
网络上其它答案说是因为版本问题,我感觉不是,因为easyexcel依赖已经完整包含了poi:3.17依赖
看图
补充方法
但是还是放上来其它人说的解决办法吧(我不用这几个):
1.检查:查看poi版本是否冲突
2.检查是否缺少依赖版本
3.检查poi的版本要大于等于3.17版本
(easyexcel2.27依赖已经包含了3.17的所有poi依赖)
总结:
- 当我们调用 excelWriter.finish() 时, 必须保证 excelWriter 对象中的IO流未释放
- 循环打包文件时不能直接使用 wrtite(zip文件流),中间需要用byte流转换一次
- 注意前后端建立连接的时长
- 注意版本号
參考地址
github上的issue地址:https://github.com/alibaba/easyexcel/issues/1872
还有excel合并zip地址:https://www.jianshu.com/p/a082eeba88a9
参考:https://www.bbsmax.com/A/B0zqravKJv/
解决com.alibaba.excel.exception.ExcelGenerateException: Can not close IO.的更多相关文章
- Atitit 解决Unhandled event loop exception错误的办法
Atitit 解决Unhandled event loop exception错误的办法 查看workspace/.metadata/.log org.eclipse.swt.SWTError: No ...
- 友好解决POI导入Excel文件行是不是为空
继 解决POI读取Excel如何判断行是不是为空 后发现了一个问题.这个是一个银行的需求,有20万个客户的资料要导入系统,但有的资料是有问题的(不能正常导入),但也有能正常导入的.现在的问题是怎么知道 ...
- 解决C#导出excel异常来自 HRESULT:0x800A03EC的方法 .
解决C#导出excel异常来自 HRESULT:0x800A03EC的方法 . xlBook.SaveAs(FilePath,Microsoft.Office.Interop.Excel.XlFi ...
- c# 解决IIS写Excel的权限问题
c# 解决IIS写Excel的权限问题 from: http://www.jb51.net/article/31473.htm 发布:mdxy-dxy 字体:[增加 减小] 类型:转载 使用以上方法必 ...
- 关于解决java读取excel文件遇空行抛空指针的问题 !
关于解决java读取excel文件遇空行抛空指针的问题 ! package exceRead; import java.io.File; import java.io.FileInputStream; ...
- hadoop错误FATAL org.apache.hadoop.hdfs.server.namenode.NameNode Exception in namenode join java.io.IOException There appears to be a gap in the edit log
错误: FATAL org.apache.hadoop.hdfs.server.namenode.NameNode Exception in namenode join java.io.IOExcep ...
- 解决方案--java执行cmd命令ProcessBuilder--出错Exception in thread "main" java.io.IOException: Cannot run program "dir d:\": CreateProcess error=2(xjl456852原创)
当我尝试在java中通过ProcessBuilder运行window的cmd命令时出现错误: public static void main(String [] args) throws IOExce ...
- Exception in thread "main" java.io.IOException: Failed to set permissions of path
在跑BuildForest的时候,编写了下面的程序: package test.breiman; import org.apache.mahout.classifier.df.mapreduce.Bu ...
- nested exception is java.sql.SQLException: IO 错误
1.错误描述 (mx.messaging.messages::ErrorMessage)#0 body = (null) clientId = "18CE3B03-9709-9DA8-763 ...
- spark运行java-jar:Exception in thread "main" java.io.IOException: No FileSystem for scheme: hdfs
今天碰到的一个 spark问题,困扰好久才解决 首先我的spark集群部署使用的部署包是官方提供的 spark-1.0.2-bin-hadoop2.tgz 部署在hadoop集群上. 在运行java ...
随机推荐
- I3D论文总结
最近看了李沐讲论文系列朱毅老师讲的I3D论文精读(视频,笔记),这里记录一下. 1.针对的问题 1.之前的视频数据集都太小,导致大多数流行的动作识别基准都很小,且即使不同模型效果有好有坏也难以区分. ...
- 1996. 游戏中弱角色的数量 (Medium)
问题描述 1996. 游戏中弱角色的数量 (Medium) 你正在参加一个多角色游戏,每个角色都有两个主要属性: 攻击 和 防御 .给你一个二维整数数组 properties ,其中 properti ...
- 01、kafka常用命令
001.kafka版本 kafka_2.13-3.0.0 kafka_2.12-2.8.0 002.模拟给topic名称是 yikuang 的发一条数据(hello world) ./kafka-co ...
- js中构造函数中this指向问题
构造函数构造函数中的this指向new创建的新对象function FOO(name) {this.name = name;console.log(this) // Foo {name: " ...
- mac系统yarn使用报错:ERROR: add is not COMMAND nor fully qualified CLASSNAME.
出现错误的过程: mac 系统上使用阿里的X6(@antv/x6) x6 快速上手: 1 npm install @antv/x6 --save 2 yarn add @antv/x6 ...
- [BOM]判断是否为pc页面、是否为ios页面
常用于pc页面与h5页面的跳转和适配,区分不同设备进行下载跳转区分. var is_pc = !(navigator.userAgent.match(/(phone|pad|pod|iPhone|iP ...
- SignalR《二》接着前篇的继续
SignalR<二>接着前篇的继续 SignalR身份验证 在ChatRoomHub加上[Authorize] 这样登录了才能发送消息 using Microsoft.AspNetCor ...
- BurpSuite暴力破解和防御实战
burpsuite暴力破解 工具准备 burp suite 用于攻击web 应用程序的集成平台 jsEncrypter 一个用于前端加密Fuzz的Burp Suite插件,支持base64.sha.m ...
- 动画图解 Git 的 10 大命令
原文地址:https://dev.to/lydiahallie/cs-visualized-useful-git-commands-37p1 原文作者:Lydia Hallie 前言 尽管 Git 是 ...
- ubuntu20关机慢: A stop job is running for Snappy daemon
Ubuntu 20 关机超时 问题 A stop job is running for Snappy daemon [1 min 30s ] 解决办法 1.修改以下配置文件超时时间,如下: sudo ...