gpt4 book ai didi

java - Jasper 报告 Excel 导出错误

转载 作者:行者123 更新时间:2023-12-01 19:59:40 25 4
gpt4 key购买 nike

我正在尝试使用以下代码块从 jasper 报告导出 Excel 报告,

JasperPrint jasperPrint = JasperFillManager.fillReport((JasperReport) request.getSession().getAttribute("report"),
(Map) request.getSession().getAttribute("parameters"), getConnection());
ServletOutputStream out = response.getOutputStream();
JRXlsExporter exporter = new JRXlsExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(out));
exporter.exportReport();
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment; filename=" + request.getSession().getAttribute("name") + ".xls");
out.flush();

当上面的代码执行时,浏览器中显示以下内容,而不是文件保存对话框,

enter image description here

但是当我尝试以 PDF 格式导出报告时,它执行得很好。我试图追踪服务器和应用程序日志以获取 Excel 导出实际发生的错误的提示,但无法获得任何提示。我正在使用 jasper report 6.4.0、poi 3.14 和 tomcat 8.5.15 等库。

所以我的问题是,在这种情况下,Excel导出失败到底可能是什么问题?任何有关解决问题的想法或有关如何追踪问题的提示将不胜感激。

最佳答案

最后我通过在上面添加以下两行解决了这个问题,

response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment; filename=" + request.getSession().getAttribute("name") + ".xls");

之前,

ServletOutputStream out = response.getOutputStream();
JRXlsExporter exporter = new JRXlsExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(out));
exporter.exportReport();
out.flush();

因此,重新排列代码块使一切正常。重新排列后的代码块,

JasperPrint jasperPrint = JasperFillManager.fillReport((JasperReport) request.getSession().getAttribute("report"),
(Map) request.getSession().getAttribute("parameters"), getConnection());
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment; filename=" + request.getSession().getAttribute("name") + ".xls");
ServletOutputStream out = response.getOutputStream();
JRXlsExporter exporter = new JRXlsExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(out));
exporter.exportReport();
out.flush();

关于java - Jasper 报告 Excel 导出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48486115/

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