<%@ page contentType="text/html; charset=UTF-8"%> <%@page import="net.sf.jasperreports.engine.export.JRXlsAbstractExporterParameter"%> <%@page import="net.sf.jasperreports.engine.export.JRXlsExporterParameter"%> <%@page import="java.net.URLEncoder"%> <%@page import="net.sf.jasperreports.engine.JRException"%> <%@page import="net.sf.jasperreports.j2ee.servlets.ImageServlet"%> <%@page import="java.io.IOException"%> <%@page import="java.io.OutputStream"%> <%@page import="com.forgon.tools.SpringBeanManger"%> <%@page import="net.sf.jasperreports.engine.JRExporterParameter"%> <%@page import="net.sf.jasperreports.engine.export.JExcelApiExporter"%> <%@page import="net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter"%> <%@page import="net.sf.jasperreports.engine.JasperPrint"%> <%@page import="com.forgon.directory.vo.LoginUserData"%> <%@page import="com.forgon.directory.acegi.tools.AcegiHelper"%> <%@page import="org.springframework.context.ApplicationContext"%> <%@page import="com.forgon.log.dwr.table.LogTableManager"%> <%@page import="java.text.DecimalFormat"%> <% long start = System.currentTimeMillis(); Object obj = session.getAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE); JasperPrint jasperPrint = null; if(obj instanceof JasperPrint){ jasperPrint = (JasperPrint)obj; } //获取Spring上下文和LogManager Bean ApplicationContext ctx = SpringBeanManger.getApplicationContext(); LogTableManager logTableManager = (LogTableManager)ctx.getBean("logTableManager"); OutputStream outputStream = null; String filename = ""; 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; response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(filename +".xlsx", "UTF-8")); }else{ filename = appointFileName; response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(filename +".xlsx", "UTF-8")); } }catch (IOException e) { //e.printStackTrace(); }catch(IllegalStateException e){ } JRXlsxExporter xlsExporter = new JRXlsxExporter(); xlsExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); xlsExporter.setParameter(JRExporterParameter.OUTPUT_STREAM,outputStream); xlsExporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,Boolean.TRUE); xlsExporter.setParameter(JRXlsExporterParameter.IGNORE_PAGE_MARGINS,Boolean.TRUE); xlsExporter.setParameter(JRXlsAbstractExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE); //xlsExporter.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE);//设置导出的Excel 数字显示成字符串问题 //xlsExporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,Boolean.FALSE); //xlsExporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,Boolean.FALSE); try { xlsExporter.exportReport(); outputStream.close(); out.clear(); out = pageContext.pushBody(); if (logTableManager != null && filename.contains("明细核算月报")) { try { // 计算耗时 long totalTime = System.currentTimeMillis() - start; // 格式化时间 DecimalFormat df = new DecimalFormat("0.00"); double totalSeconds = totalTime * 1.00 / 1000; // 根据LogManager的实际方法进行调整 logTableManager.log("报表管理","导出报表","导出了【"+ filename +"】,总耗时【"+totalSeconds+"】秒,查询条件:开始时间:【" +session.getAttribute("reportStartTime") + "】结束时间:【"+session.getAttribute("reportEndTime") +"】"); } catch (Exception e) { e.printStackTrace(); } } } catch (JRException e) { e.printStackTrace(); } %>