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