Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/reportforms/service/ReportFormsManagerImpl.java =================================================================== diff -u -r30909 -r30932 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/reportforms/service/ReportFormsManagerImpl.java (.../ReportFormsManagerImpl.java) (revision 30909) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/reportforms/service/ReportFormsManagerImpl.java (.../ReportFormsManagerImpl.java) (revision 30932) @@ -4,6 +4,7 @@ package com.forgon.disinfectsystem.reportforms.service; import java.io.FileInputStream; +import java.io.FileReader; import java.io.IOException; import java.io.OutputStream; import java.math.BigDecimal; @@ -39,9 +40,13 @@ import com.forgon.tools.excel.ExcelCellStyle; import com.forgon.tools.excel.ExcelHelper; import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.util.PathUtils; import java.text.SimpleDateFormat; +import javax.script.ScriptEngine; +import javax.script.ScriptEngineManager; +import javax.script.ScriptException; import javax.servlet.http.HttpServletRequest; /** @@ -373,17 +378,28 @@ } } @Override - public void exportHtmlTable(HttpServletRequest request, OutputStream ops) { + public void exportHtmlTable(HttpServletRequest request, OutputStream ops, String jsFileName) { try{ - BASE64Decoder decoder = new BASE64Decoder(); String htmlTable = request.getParameter("htmlTable"); if(StringUtils.isBlank(htmlTable)){ htmlTable = (String)(request.getSession().getAttribute("htmlTable")); } - htmlTable = new String(decoder.decodeBuffer(htmlTable)); - request.getSession().setAttribute("htmlTable",null); - ops.write(htmlTable.getBytes("UTF-8")); - ops.flush(); + if(StringUtils.isNotBlank(htmlTable)){ + ScriptEngineManager manager = new ScriptEngineManager(); + ScriptEngine engine = manager.getEngineByName("javascript"); + FileReader reader = new FileReader(PathUtils.getWebAppRootPath() + jsFileName); // 执行指定脚本 + engine.eval(reader); + //解压缩 + htmlTable = (String)(engine.eval("LZString.decompressFromEncodedURIComponent('"+ htmlTable +"');")); + //解BASE64 + BASE64Decoder decoder = new BASE64Decoder(); + htmlTable = new String(decoder.decodeBuffer(htmlTable)); + request.getSession().setAttribute("htmlTable",null); + ops.write(htmlTable.getBytes("UTF-8")); + ops.flush(); + } + }catch (ScriptException e){ + e.printStackTrace(); }catch(IllegalArgumentException e){ e.printStackTrace(); }catch (Exception e) { Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/reportforms/service/ReportFormsManager.java =================================================================== diff -u -r30909 -r30932 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/reportforms/service/ReportFormsManager.java (.../ReportFormsManager.java) (revision 30909) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/reportforms/service/ReportFormsManager.java (.../ReportFormsManager.java) (revision 30932) @@ -21,6 +21,7 @@ * 导出html的table到excel * @param request * @param ops OutputStream + * @param jsFileName js文件名 */ - public void exportHtmlTable(HttpServletRequest request,OutputStream ops); + public void exportHtmlTable(HttpServletRequest request,OutputStream ops, String jsFileName); }