Apache Poi - сломанная труба при вызове org.apache.poi.ooxml.poixmldocument.writeJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Apache Poi - сломанная труба при вызове org.apache.poi.ooxml.poixmldocument.write

Сообщение Anonymous »

Я пытаюсь написать документ Excel с Apache Poi 5.x. < /p>
У меня есть следующий код записи: < /p>

Код: Выделить всё

private void writeWorkbookToResponse(XSSFWorkbook outputWorkbook, HttpServletResponse response) throws IOException {
try (OutputStream outputStream = response.getOutputStream();
BufferedOutputStream bos = new BufferedOutputStream(outputStream)) {
outputWorkbook.write(bos);
bos.flush();
}
}
< /code>
При попытке сохранить документ, я получаю следующее исключение: < /p>
java.io.IOException: Broken pipe
at java.base/sun.nio.ch.FileDispatcherImpl.write0(Native Method)
at java.base/sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:62)
at java.base/sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:132)
at java.base/sun.nio.ch.IOUtil.write(IOUtil.java:76)
at java.base/sun.nio.ch.IOUtil.write(IOUtil.java:53)
at java.base/sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:532)
at org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:125)
at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.doWrite(NioEndpoint.java:1411)
at org.apache.tomcat.util.net.SocketWrapperBase.doWrite(SocketWrapperBase.java:732)
at org.apache.tomcat.util.net.SocketWrapperBase.flushBlocking(SocketWrapperBase.java:698)
at org.apache.tomcat.util.net.SocketWrapperBase.flush(SocketWrapperBase.java:683)
at org.apache.coyote.http11.Http11OutputBuffer$SocketOutputBuffer.flush(Http11OutputBuffer.java:574)
at org.apache.coyote.http11.filters.ChunkedOutputFilter.flush(ChunkedOutputFilter.java:156)
at org.apache.coyote.http11.Http11OutputBuffer.flush(Http11OutputBuffer.java:216)
at org.apache.coyote.http11.Http11Processor.flush(Http11Processor.java:1271)
at org.apache.coyote.AbstractProcessor.action(AbstractProcessor.java:408)
at org.apache.coyote.Response.action(Response.java:208)
at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:300)
at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:266)
at org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:133)
at org.springframework.security.web.util.OnCommittedResponseWrapper$SaveContextServletOutputStream.flush(OnCommittedResponseWrapper.java:524)
at java.base/java.io.BufferedOutputStream.flush(BufferedOutputStream.java:143)
at org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream.flush(ZipArchiveOutputStream.java:974)
at java.base/java.io.FilterOutputStream.flush(FilterOutputStream.java:153)
at java.xml/com.sun.org.apache.xml.internal.serializer.WriterToUTF8Buffered.flush(WriterToUTF8Buffered.java:472)
at java.xml/com.sun.org.apache.xml.internal.serializer.ToStream.flushWriter(ToStream.java:271)
at java.xml/com.sun.org.apache.xml.internal.serializer.ToXMLStream.endDocument(ToXMLStream.java:227)
at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:137)
at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:96)
at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:718)
at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:780)
at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:395)
at org.apache.poi.openxml4j.opc.StreamHelper.saveXmlInStream(StreamHelper.java:79)
at org.apache.poi.openxml4j.opc.internal.marshallers.ZipPackagePropertiesMarshaller.marshall(ZipPackagePropertiesMarshaller.java:53)
at org.apache.poi.openxml4j.opc.ZipPackage.saveImpl(ZipPackage.java:575)
at org.apache.poi.openxml4j.opc.OPCPackage.save(OPCPackage.java:1487)
at org.apache.poi.ooxml.POIXMLDocument.write(POIXMLDocument.java:227)
Я попытался написать документ Excel в файл pileoTputStream вместо потока вывода сервлета, и он, похоже, ничего не исправил.
Что может вызвать такое поведение?

Подробнее здесь: https://stackoverflow.com/questions/797 ... ment-write
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»