Похоже, что jasperreports 3.5.3 может использовать два типа «писателей Excel». По умолчанию экспортером является JRXlsExporter
, и он не очень хорошо работает с большими файлами (по крайней мере, в моем проекте 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;
}
}
Вам понадобится jxl.jar в вашем пути к классам из дистрибутива JExcelAPI 2.6.