JasperReports xlsx 导出错误 - 内容不可读 - 为啥?

Posted

技术标签:

【中文标题】JasperReports xlsx 导出错误 - 内容不可读 - 为啥?【英文标题】:JasperReports xlsx export error - Unreadable content - why?JasperReports xlsx 导出错误 - 内容不可读 - 为什么? 【发布时间】:2013-02-08 02:00:27 【问题描述】:

每当我的交叉表报告的结果超过 702 列(ZZ 列)时,就会从 Excel 收到“不可读的内容”错误。当少于此列数时 - 没有错误。有限制吗? XLSX 应该可以处理 16,000 多列。

我们正在使用 JasperReports v4.0.1 和 POI 3.6。我已经尝试并使用 JasperReports v4.7 和 POI 3.7 重新创建了同样的问题。

感谢任何帮助或见解。

导出代码:

JRXlsxExporter xlsExporter = new JRXlsxExporter();

File fileP = new File(_workdir + report_name + ".jrprint");
JasperPrint jasperPrint = (JasperPrint)
JRLoader.loadObject(fileP);

xlsExporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);
xlsExporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
xlsExporter.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE);
xlsExporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
xlsExporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_COLUMNS, Boolean.TRUE);
xlsExporter.setParameter(JRXlsExporterParameter.IS_COLLAPSE_ROW_SPAN, Boolean.TRUE);

xlsExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
xlsExporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, _outputName);
System.out.println("Exporting Excel Report to " + _outputName);
xlsExporter.exportReport();
System.out.println("Export Complete.");

【问题讨论】:

您收到任何错误吗?结果文件真的生成了吗? 另外,您可能希望提高 Jasper 的日志级别,以查看 POI 或 Jasper 本身是否抛出任何错误。 报告生成或导出期间没有错误。仅在尝试打开 Excel 文件本身时。该文件已创建,但它给出了一个不可读的内容错误,并且其中几乎没有实际数据。 我应该添加我们正在将输出写入文件,然后将文件通过电子邮件发送给请求者。这没有显示在浏览器中。 马特,简化您要完成的工作。 (1) 首先在 iReport 中导出到 XLSX。 (2) 从 JasperReports 教程中获取一个简单的示例。 (3) 增加复杂性,直到获得空/损坏的 Excel 文件。 (4) 看看能不能改用CSV格式——大部分老板应该想到“电子表格”的时候却想到了“Excel”;对于不需要格式化的输出,CSV 通常优于 XSLX。 【参考方案1】:

试试这个,

JRXlsxExporter jrXlsxExporter=new JRXlsxExporter();
jrXlsxExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
jrXlsxExporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "export.xlsx");
jrXlsxExporter.exportReport();

【讨论】:

以上是关于JasperReports xlsx 导出错误 - 内容不可读 - 为啥?的主要内容,如果未能解决你的问题,请参考以下文章

JasperReports 服务器:如何使用 url 将报告导出为 html 文件

jasperreports-server中的示例报表是怎么制作的

POI与jasperReports的关系

nodejs-xlsx导出的excel,office打开提示“发现不可读取的内容”?

JAVA POI XSSFWorkbook导出扩展名为xlsx的Excel,附带weblogic 项目导出Excel文件错误的解决方案

JasperReports教程_编程入门自学教程_菜鸟教程-免费教程分享