大的碧玉报告给Excel会导致一个损坏的文件

我使用jasperreports 3.5.3生成一个大的(但简单)的报告。 只有一个表的string。

当我列出足够大的select时,生成的文件已损坏。 Excel提醒用户,一些数据已损坏。 但是,如果我过滤数据显示一些行,包括违规的一个正常生成。

有人有这种腐败的Excel文件结果的经验吗?

提示:它发生在Linux / Apache + JBoss服务器上,但本地Windows / Jboss上的相同代码正常工作。 我不认为中间的Apache有什么事情要做。 这一定是一代人的事情。

jasperreports 3.5.3似乎可以使用两种“excel作者”。 默认情况下导出器是JRXlsExporter ,对于大文件(至less在我的Spring MVC项目中)工作不好。

解决方法是使用基于JExcelAPI的其他导出器。 我可以导出数据没有这个问题。

为了使jasperreport使用JExcelAPI进入Spring MVC安装,你必须编写一个个性化的类。 它非常简单:

 import net.sf.jasperreports.engine.JRExporter; import net.sf.jasperreports.engine.export.JExcelApiExporter; import org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsSingleFormatView; // this is the view class you'll use, instead of JasperReportsXlsView public class JasperReportsJExcelApiView extends AbstractJasperReportsSingleFormatView { // copied from JasperReportsXlsView public JasperReportsJExcelApiView() { setContentType("application/vnd.ms-excel"); } protected JRExporter createExporter() { // we create the JExcelAPIExporter, not the JRXlsExporter return new JExcelApiExporter(); } // copied from JasperReportsXlsView (I think it says: write binary data, not text) protected boolean useWriter() { return false; } } 

您将需要来自JExcelAPI 2.6发行版的类path中的jxl.jar。