jqurey异步导出word

在页面上填写值,然后导出到word模板中,并把页面上的值带到模板中,也就是导出word文档,提前有word 的模板形式,

1.jsp 页面

 

[html][/html] view plaincopyprint?

  1.   <table class=”formTable”>
  2.       <TR>
  3.         <TD class=”label”>会议地点</TD>
  4.         <TD class=”content”>
  5.         <INPUT id=”meetingSite”  type=”text” class=”text” name=”CommonLink/meetingSite”></TD>
  6.         <TD class=”label”>会议人员</TD>
  7.         <TD>
  8.         <INPUT id=”meetingPerson” type=”text” class=”text” name=”CommonLink/meetingPerson”></TD>
  9.     </TR>
  10.     <TR>
  11.         <TD class=”label”>会议内容</TD>
  12.         <TD class=”content”>
  13.         <INPUT id=”meetingContent”  type=”text” class=”text” name=”CommonLink/meetingContent”></TD>
  14.         <TD class=”label”>会议时间</TD>
  15.         <TD><INPUT id=”meetingDate” type=”text” class=”text” name=”CommonLink/meetingDate”></TD>
  16.     </TR>
  17.     <TR>
  18.         <TD class=”label”>总经理</TD>
  19.         <TD class=”content”>
  20.         <INPUT id=”manager”  type=”text” class=”text” name=”CommonLink/manager”></TD>
  21.         <TD class=”label”>采购部门</TD>
  22.         <TD><INPUT id=”purchaseDep”  type=”text” class=”text” name=”CommonLink/purchaseDep”></TD>
  23.     </TR>
  24.    </table>
  25. <div id=”btns” class=”form-btns”>
  26. <INPUT value=”导出word文档” type=”button” class=”btn” onclick=”exportWord();”>
  27.  </div>

 

 

2.导出用异步的方法

 

[html][/html] view plaincopyprint?

  1. function exportWord(){
  2.     var data = setData();
  3.     jQuery.post(“http://localhost:8080/expWord/GKBX29_word.jsp”,data,function(data1){
  4.         var url = data1; //回调函数,返回值是地址,data1
  5.         window.open(url); //打开
  6.     });
  7. }
  8. function setData(){
  9.     var data = {};
  10.     data.author=’zzz’;
  11.     data.meetingSite = document.getElementById(“meetingSite”).value;
  12.     data.purchaseDep = document.getElementById(“purchaseDep”).value;
  13.     data.meetingPerson = document.getElementById(“meetingPerson”).value;
  14.     data.meetingContent = document.getElementById(“meetingContent”).value;
  15.     data.meetingDate = document.getElementById(“meetingDate”).value;
  16.     data.manager = document.getElementById(“manager”).value;
  17.     return data;
  18. }

3.GKBX29_word.jsp其实是后台的处理方法,因为本次开发用EOS,所以在jsp用request接收值,并传递到模板

 

 

[html][/html] view plaincopyprint?

  1. <%@page import=”java.util.HashMap”%>
  2. <%@page import=”java.util.Map”%>
  3. <%@page import=”com.boco.eoms.word.client.word”%>
  4. <%
  5.     request.setCharacterEncoding(“UTF-8”);
  6.     String author = request.getParameter(“author”);
  7.     String meetingSite = request.getParameter(“meetingSite”);
  8.     String purchaseDep = request.getParameter(“purchaseDep”);
  9.     String meetingPerson = request.getParameter(“meetingPerson”);
  10.     String meetingContent = request.getParameter(“meetingContent”);
  11.     String meetingDate = request.getParameter(“meetingDate”);
  12.     String manager = request.getParameter(“manager”);
  13.     word w = new word();
  14.     Map map = new HashMap();
  15.     map.put(“author”, author);
  16.     map.put(“meetingSite”, meetingSite);
  17.     map.put(“purchaseDep”, purchaseDep);
  18.     map.put(“meetingPerson”, meetingPerson);
  19.     map.put(“meetingContent”, meetingContent);
  20.     map.put(“meetingDate”, meetingDate);
  21.     map.put(“manager”, manager);
  22.     String url = w.replacWordByMap(map, “model”); //模板名称,默认是.doc文件
  23.     response.getWriter().write(url);
  24. %>

 

 

4. 生成word 的方法

 

[java][/java] view plaincopyprint?

  1. package com.boco.eoms;
  2. import java.io.ByteArrayInputStream;
  3. import java.io.ByteArrayOutputStream;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FileOutputStream;
  7. import java.io.IOException;
  8. import java.io.OutputStream;
  9. import java.text.SimpleDateFormat;
  10. import java.util.Date;
  11. import java.util.HashMap;
  12. import java.util.Map;
  13. import org.apache.poi.hwpf.HWPFDocument;
  14. import org.apache.poi.hwpf.usermodel.Range;
  15. import org.apache.poi.poifs.filesystem.DirectoryEntry;
  16. import org.apache.poi.poifs.filesystem.POIFSFileSystem;
  17. //***************************************************************//
  18. //**   需要使用变量的地方可以用如下替换  ${name}  ,name为变量名,在map中key使用变量名,value使用要替换成的字符串,如 map.put(“name”,”栾主峰”)   **//
  19. //***************************************************************//
  20. public class word {
  21.     /**
  22.      * 根据传入的模板编号将变量替换成实际值之后生成word文档
  23.      * 需要使用变量的地方word中可以用变量替换 ,格式: ${变量名} 如: ${name}
  24.      * name为变量名,在map中key使用变量名,value使用要替换成的字符串
  25.      * 如 map.put(“name”,”栾主峰”)
  26.      * @param maps 变量集合
  27.      * @param DocName 模板名称
  28.      * @return 重新生成的文档名称包含全路径,返回-1时,文件生成错误
  29.      */
  30.     public String createWordByMap(Map<String, String> maps, String DocName) {
  31.         String path = this.getClass().getClassLoader().getResource(“/”)
  32.                 .getPath()
  33.                 + “attach/”;//获取基础路径
  34.         String docModelPath = path + “word/model/”; //生成模板所在路径
  35.         String docPath = path + “word/create/” + getCurrentDateTime(“yyyyMMdd”)
  36.                 + “/”;
  37.         //+”/”+getCurrentDateTime(“yyyyMMddHHmmssSSS”);
  38.         java.io.File filetemp = new java.io.File(docPath);
  39.         if (!filetemp.exists())
  40.             filetemp.mkdirs();
  41.         String destFile = docPath + getCurrentDateTime(“yyyyMMddHHmmssSSS”)
  42.                 + “.doc”;
  43.         HWPFDocument document = new word().replaceDoc(docModelPath + DocName
  44.                 + “.doc”, maps);
  45.         if (document != null)
  46.         {
  47.             ByteArrayOutputStream ostream = new ByteArrayOutputStream();
  48.             try {
  49.                 document.write(ostream);
  50.                 // 输出word文件
  51.                 OutputStream outs = new FileOutputStream(destFile);
  52.                 outs.write(ostream.toByteArray());
  53.                 outs.close();
  54.             } catch (IOException e) {
  55.                 e.printStackTrace();
  56.                 destFile = “-1”;
  57.             }
  58.         } else
  59.             destFile = “-1”;
  60.         return destFile;
  61.     }
  62.     /**
  63.      *
  64.      * @param destFile
  65.      * @param fileCon
  66.      */
  67.     public void exportDoc(String destFile, String fileCon) {
  68.         try {
  69.             //doc content
  70.             ByteArrayInputStream bais = new ByteArrayInputStream(fileCon
  71.                     .getBytes());
  72.             POIFSFileSystem fs = new POIFSFileSystem();
  73.             DirectoryEntry directory = fs.getRoot();
  74.             directory.createDocument(“WordDocument”, bais);
  75.             FileOutputStream ostream = new FileOutputStream(destFile);
  76.             fs.writeFilesystem(ostream);
  77.             bais.close();
  78.             ostream.close();
  79.         } catch (IOException e) {
  80.             e.printStackTrace();
  81.         }
  82.     }
  83.     /**
  84.      * 读取word模板并替换变量
  85.      * @param srcPath
  86.      * @param map
  87.      * @return
  88.      */
  89.     public HWPFDocument replaceDoc(String srcPath, Map<String, String> map) {
  90.         try {
  91.             // 读取word模板
  92.             FileInputStream fis = new FileInputStream(new File(srcPath));
  93.             HWPFDocument doc = new HWPFDocument(fis);
  94.             // 读取word文本内容
  95.             Range bodyRange = doc.getRange();
  96.             // 替换文本内容
  97.             for (Map.Entry<String, String> entry : map.entrySet()) {
  98.                 bodyRange.replaceText(“${” + entry.getKey() + “}”, entry
  99.                         .getValue());
  100.             }
  101.             return doc;
  102.         } catch (Exception e) {
  103.             e.printStackTrace();
  104.             return null;
  105.         }
  106.     }
  107.     //得到当前的系统时间
  108.     /*
  109.      根据输入的格式(String _dtFormat)得到当前时间格式
  110.      */
  111.     public String getCurrentDateTime(String _dtFormat) {
  112.         String currentdatetime = “”;
  113.         try {
  114.             Date date = new Date(System.currentTimeMillis());
  115.             SimpleDateFormat dtFormat = new SimpleDateFormat(_dtFormat);
  116.             currentdatetime = dtFormat.format(date);
  117.         } catch (Exception e) {
  118.             System.out.println(“时间格式不正确”);
  119.             e.printStackTrace();
  120.         }
  121.         return currentdatetime;
  122.     }
  123. }

5.模板中的样式

 

 

这就是这几天的项目成果,以前也写过,是导出excel 格式的模板,有时间就把这都总结起来。

标签