%@ 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("报表管理","导出报表","导出了【"+ session.getAttribute("fileName") +"】,总耗时【"+totalSeconds+"】秒,查询条件:开始时间:【"
+session.getAttribute("startTime")
+ "】结束时间:【"+session.getAttribute("endTime")
+"】");
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (JRException e) {
e.printStackTrace();
}
%>