我试图以excel(xls)格式导出报告,并在打开/保存对话框帮助下从浏览器中下载文件。JasperReports:将报告导出到Excel时文件名不正确
当文件下载框弹出时,文件名不能正确显示。该文件名来作为URL
下面是我的代码:
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReportMCQ, params, datasource);
JRXlsExporter jasperXlsExportMgr = new JRXlsExporter();
ByteArrayOutputStream xlsReport = new ByteArrayOutputStream();
jasperXlsExportMgr.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
jasperXlsExportMgr.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);
jasperXlsExportMgr.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, java.lang.Boolean.FALSE);
jasperXlsExportMgr.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, java.lang.Boolean.FALSE);
jasperXlsExportMgr.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, java.lang.Boolean.TRUE);
jasperXlsExportMgr.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_COLUMNS, java.lang.Boolean.TRUE);
jasperXlsExportMgr.setParameter(JRXlsExporterParameter.IS_COLLAPSE_ROW_SPAN, java.lang.Boolean.TRUE);
jasperXlsExportMgr.setParameter(JRXlsExporterParameter.IS_IGNORE_CELL_BORDER, java.lang.Boolean.FALSE);
jasperXlsExportMgr.setParameter(JRXlsExporterParameter.CREATE_CUSTOM_PALETTE, java.lang.Boolean.TRUE);
jasperXlsExportMgr.setParameter(JRExporterParameter.OUTPUT_STREAM, xlsReport);
jasperXlsExportMgr.exportReport();
bytes = xlsReport.toByteArray();
getResponse().setHeader("Content-disposition", "attachment; filename=\"report.xls\"");
getResponse().setContentType("application/vnd.ms-excel");
getResponse().setContentLength(bytes.length);
if (bytes.length > 0) {
servletOutputStream.write(bytes, 0, bytes.length);
servletOutputStream.flush();
servletOutputStream.close();
}
可能重复[?我怎样才能改变一个JasperReport的实际名称](http://stackoverflow.com/questions/6738253/how-can-i-change-a -jasperreports-actual-name)&[JasperReports PdfServlet以PDF格式保存报告 - 我如何设置浏览器的文件名以提示用户?](http://stackoverflow.com/q/12095833/876298) – 2013-04-04 07:33:31