添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

excelWriter.finish()关闭流时报错”Can not close IO.“ #1097

@javahuitailang

Description

触发场景描述
我要导出15万数据到一个excel中,然后返回给页面下载,每个sheet一万条数据,每次查询一万条数据写入到一个sheet中,总共查询15次,一共生成15个sheet
触发Bug的代码

   excelWriter.finish();

最后在执行这个的时候,报错了
提示的异常或者没有达到的效果

com.alibaba.excel.exception.ExcelGenerateException: Can not close IO.
	at com.alibaba.excel.context.WriteContextImpl.finish(WriteContextImpl.java:358)
	at com.alibaba.excel.write.ExcelBuilderImpl.finish(ExcelBuilderImpl.java:101)
	at com.alibaba.excel.ExcelWriter.finish(ExcelWriter.java:328)
Caused by: org.apache.catalina.connector.ClientAbortException: null
	at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:413)
	at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:480)
	at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:359)
	at org.apache.catalina.connector.OutputBuffer.close(OutputBuffer.java:309)
	at org.apache.catalina.connector.CoyoteOutputStream.close(CoyoteOutputStream.java:108)
	at com.alibaba.excel.context.WriteContextImpl.finish(WriteContextImpl.java:333)
	... 66 common frames omitted
Caused by: java.net.SocketException: Broken pipe
	at java.net.SocketOutputStream.socketWrite0(Native Method)
	at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113)
	at java.net.SocketOutputStream.write(SocketOutputStream.java:159)
	at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:215)
	at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:480)
	at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:366)
	at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:240)
	at org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:117)
	at org.apache.coyote.http11.AbstractOutputBuffer.doWrite(AbstractOutputBuffer.java:192)
	at org.apache.coyote.Response.doWrite(Response.java:517)
	at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:408)
	... 71 common frames omitted