我的理解是AbstractExcelView类函数buildExcelDocument不支持XSSFWorkbook(https://jira.spring.io/browse/spr-6898)。
我试图通过如下实现buildExcelDocument函数来解决这个问题:
Workbook workbook = null;
protected void buildExcelDocument(Map model,
HSSFWorkbook wbook,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
if(request.getRequestURL().toString().contains("xlsx")){
workbook = new XSSFWorkbook();
workbook.createSheet();
excelVersion = "xlsx"; //Used to determine response
}else{
workbook = wbook;
}
buildBothExcelDocument(model,workbook,request,response);
}
if(excelVersion.equals("xlsx")){
response.setHeader("Pragma", "public");
response.setHeader("Cache-Control", "max-age=0");
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-Disposition", "attachment; filename=test.xlsx");
}else{
response.setHeader("Pragma", "public");
response.setHeader("Cache-Control", "max-age=0");
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename=\"test.xls\"");
}
使用HSSFWorkbook时,上述所有代码都可以工作。工作簿的数据已正确创建,可以下载,并将使用Microsoft Excel 2003或Microsoft Excel 2007正确打开。
当我尝试创建.xlsx文件时,打开时出现错误,说明“Excel无法打开文件'test.xlsx',因为文件格式或文件扩展名无效。请确认文件未损坏,并且文件扩展名与文件格式匹配”。这使我相信,沿着Spring的某个地方损坏了我的文件。我的问题是:
1-我的响应contentType和header是否正确?(来源:excel文件的正确内容类型是什么?)
2-有没有办法使用Spring和AbstractExcelView创建一个xlsx excel文件?
3-Spring支持XSSFWorkbook吗?
一些附加说明:
Apache POI版本-V3.9
我在创建标题时尝试了以下操作:
response.setHeader("Content-Disposition", "attachment; filename=\"test.xlsx\"");
而且
response.setHeader("Content-Disposition", "attachment; filename='test.xlsx'");
都产生相同的失败结果。
我使用以下链接帮助将旧的HSSF代码转换为使用SS用户模型,http://poi.apache.org/spreadsheet/converting.html。我在没有Spring干扰的情况下测试了这个转换过程,并且能够成功地同时创建xls和xlsx文件。谢谢你的帮助。
我知道POI的.NET实现有一个写入流的方法。如果您将工作簿接口编写为Stream,并将流作为带有参数内容和头的字节数组返回,那么它应该可以工作--我在.NET MVC控制器中遇到过类似的问题,无法正确地为响应提供服务。
我有一个excel表,我想有选择地将其内容转移到列表中。该对象有2个属性:。 我想将第一列设置为ID。我把这部分做对了。我还想追加第3、4、6、7列的值。例如,如果我的excel看起来像: 我想要4404A01459C1作为id(再次,我得到了这个部分)。然后我要13.14.8.7,跳过A1和B1,用;我如何做到这一点?
我创建CSV到XLSX应用程序-我的第一个问题 我阅读了所有关于这个错误的文章,但我已经有了所有的依赖 现在我不确定问题出在哪里
问题内容: 如何转换 至 在Apache POI中? 环境 : JSE1.6 JBossAS 4.3.2 兴趣点3.7 问题答案: 此代码已改编自我在coderanch论坛上找到的内容
我使用poi-jar创建.xlsx文件,poi-3.15.jar,poi-ooxml-
我得到了这个例外,但我不能理解那里发生了什么。 因为在编译时,我的类可以访问apache POI类,但在运行时,我的类抛出异常,他无法找到 。 如果你有什么建议,请分享。 我得到以下异常。 Manifest.MF如下