我有一個生成Excel文件並以字節[]形式輸出的Jasper報告,我希望該文件在瀏覽器中顯示爲下載內容,但此刻它只是打印原始代碼到瀏覽器。設置字節[]作爲文件下載
代碼的相關部分低於,這是從一個AJAX請求開始(頁面已經加載):
JasperReport jasperReport;
JasperPrint jasperPrint;
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
byte[] excel = null;
FacesContext facesContext = FacesContext.getCurrentInstance();
try {
ArrayList<SwimDataReport> dataList = getData();
if(dataList!=null){
JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(dataList, false);
jasperReport = JasperCompileManager.compileReport(reportFile.getPath());
jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);
JRXlsExporter exporter = new JRXlsExporter();
ByteArrayOutputStream xlsReport = new ByteArrayOutputStream();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, xlsReport);
exporter.exportReport();
excel = xlsReport.toByteArray();
response.reset();
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment; filename=\"Export.xls\"");
xlsReport.close();
OutputStream ouputStream = response.getOutputStream();
ouputStream.write(excel);
ouputStream.close();
facesContext.responseComplete();
this.cleanUp();
}else{
return;
}
} catch (JRException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
任何想法,我要去的地方錯了嗎?與此類似
感謝您的建議Stefano,我試過了,但它仍然只是在網頁上顯示原始代碼 – DaveB