gpt4 book ai didi

java - 在weblogic 11 + linux中无法成功导出excel

转载 作者:行者123 更新时间:2023-12-01 05:35:23 25 4
gpt4 key购买 nike

<%
response.reset();
response.setHeader("Content-Disposition", "attachment;filename=\"" + "test.xls\"");
response.setHeader("Content-Transfer-Encoding", "binary");
response.setContentType("application/vnd.ms-excel");

InputStream is = new FileInputStream(realPath);
//OutputStream outStream = response.getOutputStream();

JasperPrint jasperPrint = JasperFillManager.fillReport(is,
parameters, new JRBeanCollectionDataSource(pdfList));

JRAbstractExporter exporter = new JExcelApiExporter();
exporter.setParameter(JExcelApiExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JExcelApiExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE);
exporter.setParameter(JExcelApiExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
exporter.setParameter(JExcelApiExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
exporter.setParameter(JExcelApiExporterParameter.OUTPUT_STREAM, out);
exporter.exportReport();

outStream.flush();
outStream.close();

out.clear();
out =pageContext.pushBody();
%>

我们使用上面的代码生成了一个excel,在tomcat + windows下运行良好,但是当我们上传到linux + weblogic服务器后,excel就损坏了。我使用文本编辑器打开Excel,我发现它在Excel中添加了几个空行,这导致Excel无法成功打开,任何人都可以指点我正确的方向吗?为什么会有空间?它是怎么来的?

提前致谢!

最佳答案

我怀疑您对 pageContext.pushBody() 的使用可能是罪魁祸首。据我所知,pushBody 旨在更新 JSP 标记范围内的输出。

当您生成二进制内容(例如 Excel 文件)时,您需要绝对确定预期的字节,并且只有预期的字节到达浏览器,您需要写入这些字节,刷新输出,然后进行确保没有写任何其他内容。通过调用pushBody(),您可以将更多内容写入输出,并且可以输出JSP页面中的任何空行(以及它们之间的回车/换行符)。

总而言之,我建议您不要在 JSP 中执行此操作,而是在 Servlet 中执行此操作。

关于java - 在weblogic 11 + linux中无法成功导出excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8277035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com