%@ page contentType="text/html; charset=UTF-8"%>
<%@page import="java.net.URLEncoder"%>
<%@page import="java.io.OutputStream"%>
<%@page import="net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter"%>
<%@page import="net.sf.jasperreports.engine.JasperPrint"%>
<%@page import="net.sf.jasperreports.export.SimpleXlsxReportConfiguration"%>
<%@page import="net.sf.jasperreports.export.SimpleExporterInput"%>
<%@page import="net.sf.jasperreports.export.Exporter"%>
<%@page import="net.sf.jasperreports.export.SimpleOutputStreamExporterOutput"%>
<%
JasperPrint jasperPrint = (JasperPrint)session.getAttribute("jasperPrintForPrint");
OutputStream outputStream = null;
String fileName = null;
try {
out.clear(); //清空缓存的内容
out = pageContext.pushBody();
outputStream = response.getOutputStream();
response.setContentType("application/x-download");
response.setCharacterEncoding("UTF-8");
String appointFileName = (String)session.getAttribute("appointFileName");
if(appointFileName == null){
appointFileName = "";
}
if(appointFileName == ""){
fileName = session.getAttribute("fileName") + appointFileName +".xlsx";
}else{
fileName = appointFileName +".xlsx";
}
response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(fileName, "UTF-8"));
}catch (Exception e) {
//e.printStackTrace();
}
SimpleOutputStreamExporterOutput simpleOutputStreamExporterOutput = new SimpleOutputStreamExporterOutput(outputStream);
Exporter exporter = new JRXlsxExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(simpleOutputStreamExporterOutput);
SimpleXlsxReportConfiguration configuration = new SimpleXlsxReportConfiguration();
configuration.setOnePagePerSheet(false);
configuration.setRemoveEmptySpaceBetweenRows(true);
configuration.setIgnorePageMargins(true);
configuration.setDetectCellType(true);
configuration.setWhitePageBackground(false);
exporter.setConfiguration(configuration);
exporter.exportReport();
try {
outputStream.close();
out.clear();
out = pageContext.pushBody();
} catch (Exception e) {
e.printStackTrace();
}
%>