Excel的大型jasper报告会导致文件损坏

Excel的大型jasper报告会导致文件损坏,excel,jasper-reports,corrupt,Excel,Jasper Reports,Corrupt,我正在使用jasperreports 3.5.3生成一个大型(但简单)报告。只有一张有字符串的桌子 当我列出足够大的选择时,生成的文件已损坏。Excel会提醒用户某些数据已损坏。但是,如果我过滤数据以显示一些行,包括有问题的行,它将正常生成 是否有人有处理此损坏excel文件结果的经验 提示:它发生在Linux/Apache+JBoss服务器上,但在本地Windows/JBoss上同样的代码也可以正常工作。我不认为中间的阿帕奇有什么事要做。这一定是这一代人的特点。看来jasperreports

我正在使用jasperreports 3.5.3生成一个大型(但简单)报告。只有一张有字符串的桌子

当我列出足够大的选择时,生成的文件已损坏。Excel会提醒用户某些数据已损坏。但是,如果我过滤数据以显示一些行,包括有问题的行,它将正常生成

是否有人有处理此损坏excel文件结果的经验


提示:它发生在Linux/Apache+JBoss服务器上,但在本地Windows/JBoss上同样的代码也可以正常工作。我不认为中间的阿帕奇有什么事要做。这一定是这一代人的特点。

看来jasperreports 3.5.3可以使用两种“excel编写器”。默认情况下,导出器是
JRXlsExporter
,不能很好地处理大文件(至少在我的springmvc项目中是这样)

解决方法是使用另一个导出器,该导出器基于JExcelAPI。我可以用这个导出数据而不出问题

要使jasperreport在Spring MVC安装中使用JExcelAPI,您必须编写一个个性化的类。很简单:

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发行版的类路径中使用jxl.jar。

这是3.6.0中修复的错误: