[英]Jasperreports excel failed to export
我正在尝试将 jasperreport 导出为 xls 格式,但失败了。
以下是我的代码:
<%@page import="net.sf.jasperreports.engine.export.JRXlsExporterParameter"%>
<%@page import="net.sf.jasperreports.engine.export.JRXlsExporter"%>
<%@page import="net.sf.jasperreports.engine.export.JRPdfExporter"%>
<%@page import="net.sf.jasperreports.engine.export.JRPdfExporterParameter"%>
<%@page import="net.sf.jasperreports.engine.JRExporter"%>
<%@page import="net.sf.jasperreports.engine.JRExporterParameter"%>
<%@page import="net.sf.jasperreports.engine.JasperFillManager"%>
<%@page import="net.sf.jasperreports.engine.JasperPrint"%>
<%
String RptName = (request.getParameter("RptName")) != null? request.getParameter("RptName"):"";
String iReportPath = utilHandler.GetResBundle("IREPORT_PATH");
String jasperReportPath = iReportPath + RptName + ".jasper";
response.setContentType("application/"+strReportFormat);
os = response.getOutputStream();
if(strReportFormat.equals("pdf")) {
exporter = new JRPdfExporter();
exporter.setParameter(JRPdfExporterParameter.CHARACTER_ENCODING, "UTF-8");
print = JasperFillManager.fillReport(jasperReportPath,map, connection);
exporter.setParameter(JRExporterParameter.JASPER_PRINT,print);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,os);
exporter.exportReport();
} else if(strReportFormat.equals("msexcel")) {
strReportFileFormat = "xls";
response.setHeader("Content-Disposition"," inline; filename="+RptName+"."+strReportFileFormat);
exporter = new JRXlsExporter();
exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT, print);
exporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, os);
exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,Boolean.FALSE);
exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,Boolean.TRUE);
exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_COLUMNS,Boolean.TRUE);
exporter.setParameter(JRXlsExporterParameter.IS_COLLAPSE_ROW_SPAN,Boolean.TRUE);
exporter.setParameter(JRXlsExporterParameter.IGNORE_PAGE_MARGINS,Boolean.TRUE);
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,Boolean.FALSE);
System.out.println("generate Excel");
print = JasperFillManager.fillReport(jasperReportPath,map, connection);
exporter.setParameter(JRExporterParameter.JASPER_PRINT,print);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,os);
exporter.exportReport();
}
%>
我使用 .jasper 文件生成 pdf 和 excel, xls失败,但PDF 工作正常并在 chrome 浏览器上显示正常。 我检查了 tomcat 8 日志,在 catalina.out 和 tomcat 控制台(Windows bat)上找不到任何错误日志。 知道可能是什么问题吗?
响应内容处置错误,我替换为:
response.setHeader("Content-Disposition", "attachment;filename=\"" + new String(RptName.getBytes("utf-8"),"ISO-8859-1") + ".pdf\"");
response.setHeader("Content-Disposition", "attachment;filename=\"" + new String(RptName.getBytes("utf-8"),"ISO-8859-1") + ".xls\"");
对于 pdf 和 xls,现在工作正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.