我需要在jasper报告中导出为excel和csv格式。 对于excel,我尝试通过创建自定义类(使用api),但它不是导出,事情是保存和取消弹出窗口来了文件类型未知..
知道为什么会这样吗?
答案 0 :(得分:6)
用JRXlsExporter导出到XSL,JRCsvExporter用于CSV。
在大多数情况下,不需要创建自定义类。
修改强>
该类存储在jar poi-3.5-FINAL-20090928.jar中,该jar应位于“iReportInstallationFolder”\ modules \ ext \
中对我而言,C:\Program Files\Jaspersoft\iReport-3.7.4\ireport\modules\ext\
名称可能不同,但应该是poi-3.5-FINAL - * .jar。
让它包含在你的类路径中,你应该没问题。
您可以从Apache Poi主页下载jar。
以下链接指向我们网站http://archive.apache.org/dist/poi/release/bin/poi-bin-3.5-FINAL-20090928.tar.gz
的广告素材答案 1 :(得分:1)
对于使用JRCsvExporter的用户,以下代码可能很有用。给出一些样本结构。
Spring Framework Service类(CSVExportService.java):
public JasperPrint getRawData(String empIds) {
JasperPrint jp = null;
String reportName = "Employee Report";
// use your own method to get empList
// eg: List<Employee> empList = empServiceClass.findByEmpIds(empIds);
JRDataSource jrDataSource = new JRBeanCollectionDataSource(empList);
// build your report
DynamicReportBuilder dynamicReportBuilder = new DynamicReportBuilder();
dynamicReportBuilder.setAllowDetailSplit(false);
// configure your report with few more options here
// create columns
ColumnBuilder columnBuilderName = ColumnBuilder.getNew();
columnBuilderName.setTitle("Emp Name");
columnBuilderName.setWidth(300);
columnBuilderName.setFixedWidth(true);
columnBuilderName.setColumnProperty("name", String.class.getName());
dynamicReportBuilder.addColumn(columnBuilderName.build());
DynamicReport dynamicReport = dynamicReportBuilder.build();
jp = DynamicJasperHelper.generateJasperPrint(dynamicReport, new ClassicLayoutManager(), jrDataSource, new HashMap<String, Object>());
return jp;
}
Spring Framework Controller Class:
public void exportToCSV(@PathVariable String empIds){
JasperPrint jp = null;
jp = csvExportService.getRawData(empIds);
response.setContentType("text/csv");
response.setHeader("Content-Disposition", "attachment; filename="EMPRawData.csv");
OutputStream out = response.getOutputStream();
JRCsvExporter exporterCSV = new JRCsvExporter();
exporterCSV.setParameter(JRExporterParameter.JASPER_PRINT, jp);
exporterCSV.setParameter(JRExporterParameter.OUTPUT_STREAM, out);
exporterCSV.exportReport();
out.flush();
}
答案 2 :(得分:0)
JRCsvExporter exporter = new JRCsvExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleWriterExporterOutput(new FileOutputStream(new File(output1))));
SimpleCsvExporterConfiguration configuration = new SimpleCsvExporterConfiguration();
//configuration.setWriteBOM(Boolean.TRUE);
exporter.setConfiguration(configuration);
exporter.exportReport();
请使用此代码。它可以正常工作