<%@ 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(); } %>