我需要在JasperReports
中导出为excel和csv格式。对于excel,我尝试使用JRXlsExporter
类,但它不是导出。事情是“保存并取消”弹出窗口随文件类型未知而来......
file type like "getReportDetail.do"
其中getReportDetail.do
是struts config xml的“action”元素中的“path”属性。我通过单击html按钮来调用此getReportDetail.do
来调用“action class”来导出excel。
我正在设置如下参数
reportExporter.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint);
reportExporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, reportStream);
reportExporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
reportExporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
reportExporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
reportExporter.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE);
其中reportStream
是ByteArrayOutputStream()
的对象,
reportExporter
是JRXlsExporter
对象
且contenttype
为response.setContentType("application/xls");
知道为什么会这样吗?
答案 0 :(得分:3)
尝试设置以下标题:
Content-Type: application/vnd.ms-excel
Content-Disposition: attachment; filename=report.xls
答案 1 :(得分:1)
这是我的代码,但要注意实现的版本。 注意:使用ireport导出excel,适用于ireport 6.0,java 7
Map<String, Object> parametro = new HashMap<String, Object>();
parametro.put("USUARIO", UConstante.NAME_MINISTERIO_USER);
parametro.put("RUTA_LOGO", PuenteFile.getRutaFiles(FacesContext.getCurrentInstance(), PuenteFile.RUTA_IMG_LOGO));
parametro.put("PATH_SYSTEM", rutaFileSystemHD);
parametro.put("WHERE_DATA", WHERE_REGISTRO);
parametro.put("WHERE_PROYECTO_USUARIO", WHERE_PROYECTO_USUARIO);
parametro.put("WHERE_ZONA", WHERE_ZONA);
parametro.put("NAME_APP", RutaFile.NAME_APP);
parametro.put("ID_USUARIO", getUsuario().getId());
parametro.put("ID_PROYECTO", beanProyecto.getId());
parametro.put("SUBREPORT_DIR", SUBREPORT_DIR);
System.out.println(">>>>>> PARAMETROS :" + parametro.toString());
try {
JasperPrint jasperPrint = JasperFillManager.fillReport(path, parametro, PgConnector.getConexion());
JRXlsExporter xlsExporter = new JRXlsExporter();
xlsExporter.setExporterInput(new SimpleExporterInput(jasperPrint));
xlsExporter.setExporterOutput(new SimpleOutputStreamExporterOutput(PATH_REPORT_FILE + nameExcel);
SimpleXlsReportConfiguration xlsReportConfiguration = new SimpleXlsReportConfiguration();
SimpleXlsExporterConfiguration xlsExporterConfiguration = new SimpleXlsExporterConfiguration();
xlsReportConfiguration.setOnePagePerSheet(true);
xlsReportConfiguration.setRemoveEmptySpaceBetweenRows(false);
xlsReportConfiguration.setDetectCellType(true);
xlsReportConfiguration.setWhitePageBackground(false);
xlsExporter.setConfiguration(xlsReportConfiguration);
xlsExporter.exportReport();
} catch (Exception ex) {
ex.printStackTrace();
}
和更低版本的ireport 5.6
try {
JasperPrint jasperPrint = JasperFillManager.fillReport(new FileInputStream(path), parametro, PgConnector.getConexion());
JRXlsExporter exporterXLS = new JRXlsExporter();
exporterXLS.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint);
exporterXLS.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
exporterXLS.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE);
exporterXLS.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
exporterXLS.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
exporterXLS.setParameter(JRXlsExporterParameter.OUTPUT_FILE_NAME,PATH_REPORT_FILE + nameExcel);
exporterXLS.exportReport();
} catch (Exception ex) {
ex.printStackTrace();
}