com.alibaba.excel.exception.ExcelGenerateException: Can not close IO.
--
| at com.alibaba.excel.context.WriteContextImpl.finish(WriteContextImpl.java:420)
| at com.alibaba.excel.write.ExcelBuilderImpl.finish(ExcelBuilderImpl.java:99)
| at com.alibaba.excel.ExcelWriter.finish(ExcelWriter.java:143)
| at com.galaxy.introduce.service.impl.ExcelServiceImpl.exportExcelDiyHead(ExcelServiceImpl.java:103)
| at com.galaxy.introduce.controller.EasyExcelController.exportPoint(EasyExcelController.java:996)
| at com.galaxy.introduce.controller.EasyExcelController$$FastClassBySpringCGLIB$$d0123d3f.invoke()
| at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
| at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793)
| at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
| at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
| at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:58)
| at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
| at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
| at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89)
| at com.galaxy.introduce.intercept.LogAspect.around(LogAspect.java:57)
| at sun.reflect.GeneratedMethodAccessor136.invoke(Unknown Source)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
| at java.lang.reflect.Method.invoke(Method.java:498)
| at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:634)
| at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:624)
| at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:72)
| at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
| at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
| at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
| at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
| at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
| at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708)
| at com.galaxy.introduce.controller.EasyExcelController$$EnhancerBySpringCGLIB$$714141d0.exportPoint()
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
| at java.lang.reflect.Method.invoke(Method.java:498)
| at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
| at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
| at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
| at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
| at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
| at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
| at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072)
| at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)
| at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
| at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:502)
| at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:596)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
| at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
| at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
| at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
| at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
| at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
| at datadog.trace.instrumentation.springweb.HandlerMappingResourceNameFilter.doFilterInternal(HandlerMappingResourceNameFilter.java:50)
| at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
| at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
| at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
| at org.springframework.web.filter.ServletRequestPathFilter.doFilter(ServletRequestPathFilter.java:56)
| at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354)
| at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
| at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
| at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
| at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492)
| at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
| at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
| at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
| at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:768)
| at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
| at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:389)
| at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
| at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926)
| at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791)
| at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
| at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
| at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
| at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
| at java.lang.Thread.run(Thread.java:750)
| Caused by: org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
| at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:351)
| at org.apache.catalina.connector.OutputBuffer.flushByteBuffer(OutputBuffer.java:784)
| at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:298)
| at org.apache.catalina.connector.OutputBuffer.close(OutputBuffer.java:250)
| at org.apache.catalina.connector.CoyoteOutputStream.close(CoyoteOutputStream.java:153)
| at com.alibaba.excel.context.WriteContextImpl.finish(WriteContextImpl.java:398)
| ... 87 common frames omitted
| Caused by: java.io.IOException: Broken pipe
| at sun.nio.ch.FileDispatcherImpl.write0(Native Method)
| at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
| at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
| at sun.nio.ch.IOUtil.write(IOUtil.java:65)
| at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:470)
| at org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:136)
| at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.doWrite(NioEndpoint.java:1431)
| at org.apache.tomcat.util.net.SocketWrapperBase.doWrite(SocketWrapperBase.java:768)
| at org.apache.tomcat.util.net.SocketWrapperBase.writeBlocking(SocketWrapperBase.java:593)
| at org.apache.tomcat.util.net.SocketWrapperBase.write(SocketWrapperBase.java:537)
| at org.apache.coyote.http11.Http11OutputBuffer$SocketOutputBuffer.doWrite(Http11OutputBuffer.java:540)
| at org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:110)
| at org.apache.coyote.http11.Http11OutputBuffer.doWrite(Http11OutputBuffer.java:193)
| at org.apache.coyote.Response.doWrite(Response.java:603)
| at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:338)
| ... 92 common frames omitted
异常堆栈信息
com.alibaba.excel.exception.ExcelGenerateException: Can not close IO. -- | at com.alibaba.excel.context.WriteContextImpl.finish(WriteContextImpl.java:420) | at com.alibaba.excel.write.ExcelBuilderImpl.finish(ExcelBuilderImpl.java:99) | at com.alibaba.excel.ExcelWriter.finish(ExcelWriter.java:143) | at com.galaxy.introduce.service.impl.ExcelServiceImpl.exportExcelDiyHead(ExcelServiceImpl.java:103) | at com.galaxy.introduce.controller.EasyExcelController.exportPoint(EasyExcelController.java:996) | at com.galaxy.introduce.controller.EasyExcelController$$FastClassBySpringCGLIB$$d0123d3f.invoke(java 代码
ExcelWriter excelWriter = null; try { // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setCharacterEncoding("utf-8"); // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\+", "%20"); response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); excelWriter = EasyExcel.write(response.getOutputStream()) .head(list) .build(); WriteSheet writeSheet = EasyExcel.writerSheet(fileName).build(); excelWriter.write(dataList, writeSheet);
使用jar包 3.3.3