当前位置: 首页 > 知识库问答 >
问题:

导出到ServletOutpuStream的Excel文件已损坏

臧弘和
2023-03-14

我正在ServletOutputStream上编写一个excel文件(使用HSSFWorkBook for xls和XSSFWorkBook forxlsx)。作为ServletResponse的一部分下载的excel已损坏并包含垃圾字符。

  outStream = response.getOutputStream(); //ServletOutputStream outStream
  workbook.write(outStream); //HSSFWorkBook/XSSFWorkBook
  workbook.close();
  outStream.flush();

我尝试过将Excel文件写入FileOutpuStream,它工作正常。Excel文件可读且完好无损。

已经检查了关于同一问题的其他几个StackOverflow查询。尝试将servlet响应的内容类型更改为“application/excel”,“application/vnd.openxmlformats-officedocument.spreadsheetml.sheet”,“application/vnd.ms-excel”等。但问题仍然存在。

但是,我需要将 excel 写入 ServletOutputStream(意识到 servlet 输出流的二进制性质,并且还尝试将 excel 写入 ByteOutputStream,然后从派生的 ByteOuputArray 写入 ServletOutputStream)。

请帮忙。

PS:这段代码是从JSP和Java Servlet类中完成的。两者产生相同的结果。

共有1个答案

方夜洛
2023-03-14

非常感谢BalusC!

我已经按照建议重置了HttpServlet响应对象,然后设置标头并将Excel写入ServletOutpuStream。

response.reset()

Excel下载完美!

 类似资料:
  • 我正在使用ApachePOI,我创建了一个XSSF工作簿,并尝试打开一个xlsx文件。它在当地的一个地方很有效。但是,当我用Excel打开真正服务器(AWS EC2、Tomcat8、JDK 1.8)上的Excel文件时,它显示文件已损坏(.xls工作)。这是我的代码: 本地Spring4, jdk1.8, tomcat 8.0, maven 真正的AWS EC2亚马逊linux2,jdk1。8、t

  • 通过官方提供的插件我们可以将图表中数据导出为常见的 Excel 数据文件(.csv 和 .xls),下面是一个实例: 使用方法 额外引入插件即可,我们提供的版本已经解决了中文乱码问题,详见 社区帖子 <!-- 基本的文件 --> <script src="http://code.highcharts.com.cn/highcharts/highcharts.js"></script> <scrip

  • 本文向大家介绍C#导出数据到Excel文件的方法,包括了C#导出数据到Excel文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#导出数据到Excel文件的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。

  • 问题内容: 我以前使用Axios下载GET端点提供的文件。端点已更改,现在是POST,但是不需要参数。我正在更新原始的下载方法,但是返回了损坏的文件。 我不知道,如果问题出在,或如何响应的处理或全部的上方。到目前为止,我已经尝试了各种选择,但没有运气。任何建议将不胜感激! 我已经能够使用Postman下载文件,所以我知道端点提供的文件很好。我只是无法在我的React代码中理清参数来做到这一点。 问

  • 我已经在中创建了工作簿/Excel。使用ApachePOIAPI成功实现了xlsx格式与Java的结合。我的代码如下,它是在D驱动器中创建的一个名为“RiponAlWasim.xlsx”的文件: 当我试图打开"RiPonAlWasim.xlsx"时,显示文件已损坏。怎么了?

  • 我正在使用apache poi,我创建了一个HSSF工作簿,并尝试打开一个xlsx文件。但当我用excel打开时,它显示文件已损坏。这是我的密码。