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

1.jsp 页面  

   <table class="formTable"><TR><TD class="label">会议地点</TD><TD class="content"><INPUT id="meetingSite"  type="text" class="text" name="CommonLink/meetingSite"></TD><TD class="label">会议人员</TD><TD><INPUT id="meetingPerson" type="text" class="text" name="CommonLink/meetingPerson"></TD></TR><TR><TD class="label">会议内容</TD><TD class="content"><INPUT id="meetingContent"  type="text" class="text" name="CommonLink/meetingContent"></TD><TD class="label">会议时间</TD><TD><INPUT id="meetingDate" type="text" class="text" name="CommonLink/meetingDate"></TD></TR><TR><TD class="label">总经理</TD><TD class="content"><INPUT id="manager"  type="text" class="text" name="CommonLink/manager"></TD><TD class="label">采购部门</TD><TD><INPUT id="purchaseDep"  type="text" class="text" name="CommonLink/purchaseDep"></TD></TR>     </table><div id="btns" class="form-btns">   <INPUT value="导出word文档" type="button" class="btn" οnclick="exportWord();">  </div> 

2.js异步的方法

function exportWord(){var data = setData();jQuery.post("http://localhost:8080/expWord/GKBX29_word.jsp",data,function(data1){var url = data1; //回调函数,返回值是地址,data1     window.open(url); //打开});
}
function setData(){var data = {};data.author='zzz';data.meetingSite = document.getElementById("meetingSite").value; data.purchaseDep = document.getElementById("purchaseDep").value; data.meetingPerson = document.getElementById("meetingPerson").value; data.meetingContent = document.getElementById("meetingContent").value; data.meetingDate = document.getElementById("meetingDate").value; data.manager = document.getElementById("manager").value;        return data;
}

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

<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="com.boco.eoms.word.client.word"%><%request.setCharacterEncoding("UTF-8");String author = request.getParameter("author");String meetingSite = request.getParameter("meetingSite");String purchaseDep = request.getParameter("purchaseDep");String meetingPerson = request.getParameter("meetingPerson");String meetingContent = request.getParameter("meetingContent");String meetingDate = request.getParameter("meetingDate");String manager = request.getParameter("manager");word w = new word();Map map = new HashMap();map.put("author", author);map.put("meetingSite", meetingSite);map.put("purchaseDep", purchaseDep);map.put("meetingPerson", meetingPerson);map.put("meetingContent", meetingContent);map.put("meetingDate", meetingDate);map.put("manager", manager);String url = w.replacWordByMap(map, "model"); //模板名称,默认是.doc文件response.getWriter().write(url);
%> 

4. 生成word 的方法

package com.boco.eoms;import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.poifs.filesystem.DirectoryEntry;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;//***************************************************************////**   需要使用变量的地方可以用如下替换  ${name}  ,name为变量名,在map中key使用变量名,value使用要替换成的字符串,如 map.put("name","栾主峰")   **//
//***************************************************************//public class word {/*** 根据传入的模板编号将变量替换成实际值之后生成word文档* 需要使用变量的地方word中可以用变量替换 ,格式: ${变量名} 如: ${name}  * name为变量名,在map中key使用变量名,value使用要替换成的字符串* 如 map.put("name","栾主峰")  * @param maps 变量集合* @param DocName 模板名称* @return 重新生成的文档名称包含全路径,返回-1时,文件生成错误*/public String createWordByMap(Map<String, String> maps, String DocName) {String path = this.getClass().getClassLoader().getResource("/").getPath()+ "attach/";//获取基础路径String docModelPath = path + "word/model/"; //生成模板所在路径String docPath = path + "word/create/" + getCurrentDateTime("yyyyMMdd")+ "/";//+"/"+getCurrentDateTime("yyyyMMddHHmmssSSS");java.io.File filetemp = new java.io.File(docPath);if (!filetemp.exists())filetemp.mkdirs();String destFile = docPath + getCurrentDateTime("yyyyMMddHHmmssSSS")+ ".doc";HWPFDocument document = new word().replaceDoc(docModelPath + DocName+ ".doc", maps);if (document != null){ByteArrayOutputStream ostream = new ByteArrayOutputStream();try {document.write(ostream);// 输出word文件OutputStream outs = new FileOutputStream(destFile);outs.write(ostream.toByteArray());outs.close();} catch (IOException e) {e.printStackTrace();destFile = "-1";}} elsedestFile = "-1";return destFile;}/*** * @param destFile* @param fileCon*/public void exportDoc(String destFile, String fileCon) {try {//doc contentByteArrayInputStream bais = new ByteArrayInputStream(fileCon.getBytes());POIFSFileSystem fs = new POIFSFileSystem();DirectoryEntry directory = fs.getRoot();directory.createDocument("WordDocument", bais);FileOutputStream ostream = new FileOutputStream(destFile);fs.writeFilesystem(ostream);bais.close();ostream.close();} catch (IOException e) {e.printStackTrace();}}/*** 读取word模板并替换变量* @param srcPath* @param map* @return*/public HWPFDocument replaceDoc(String srcPath, Map<String, String> map) {try {// 读取word模板FileInputStream fis = new FileInputStream(new File(srcPath));HWPFDocument doc = new HWPFDocument(fis);// 读取word文本内容Range bodyRange = doc.getRange();// 替换文本内容for (Map.Entry<String, String> entry : map.entrySet()) {bodyRange.replaceText("${" + entry.getKey() + "}", entry.getValue());}return doc;} catch (Exception e) {e.printStackTrace();return null;}}//得到当前的系统时间 /*根据输入的格式(String _dtFormat)得到当前时间格式*/public String getCurrentDateTime(String _dtFormat) {String currentdatetime = "";try {Date date = new Date(System.currentTimeMillis());SimpleDateFormat dtFormat = new SimpleDateFormat(_dtFormat);currentdatetime = dtFormat.format(date);} catch (Exception e) {System.out.println("时间格式不正确");e.printStackTrace();}return currentdatetime;}}

5.模板中的样式

转载于:https://www.cnblogs.com/estellez/p/4110015.html

poi导出word模板项目实例(一个文件)相关推荐

  1. poi导出word模板

    **poi导出word模板段落处理 流程: 1:读取文档:` //获取docx解析对象 XWPFDocument document = new XWPFDocument(POIXMLDocument. ...

  2. 使用POI 导出word模板文件

    maven依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</art ...

  3. 利用poi读取word模板文件生成新的word文档

    利用poi读取word模板文件生成新的word文档 利用poi读取word模板文件,并回填逻辑数据,生成并导出需要的word文档源码.解决模板读取异常问题,提供wordUtils工具类(各种功能实现) ...

  4. Java POI导出word文件及生成表格

    HWPF是处理 Microsoft Word 97(-2007) .doc文件格式,它还为较旧的Word 6和Word 95文件格式提供了有限的只读支持.包含在poi-scratchpad-XXX.j ...

  5. java word模板poi生成文件_利用poi读取word模板文件生成新的word文档

    利用poi读取word模板文件生成新的word文档 利用poi读取word模板文件,并回填逻辑数据,生成并导出需要的word文档源码.解决模板读取异常问题,提供wordUtils工具类(各种功能实现) ...

  6. Java使用poi根据word模板进行导出(有效可行)

    最近一直在做与导出这部分相关的事情,有一个就是需要将数据库中查询到的信息写入到word模板中再进行导出.下面的代码直接复制使用即可,没啥毛病,无论是段落中的,还是表格中的,都是有效的.使用过程中遇到的 ...

  7. POI导出word文件中表格合并方法(行合并,列合并)

    项目中遇到记录一下 POI导出word文件中表格合并方法(行合并,列合并) . // word表格跨列合并单元格//row 指定行.fromCell 开始列数.toCell 结束列数.public v ...

  8. poi导出word文件(带表格)

    poi导出word文件(带表格) 一.背景介绍 现有业务需求根据前端页面上所选的时间和列,来生成word表格,方便打印. 二.POM <dependency><groupId> ...

  9. SpringBoot Poi导出word,浏览器下载

    文章目录 SpringBoot Poi导出word,浏览器下载 1.引依赖: 2.写代码(生成本地word): 3.返回给浏览器下载 1.如何返回给浏览器让它下载 4.解决方案 5.为什么没使用eas ...

  10. org.apache.poi往word模板中填充数据(word2003)

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能.通过字面意思,我们大概知道这个API是可以用来做 j ...

最新文章

  1. 用supervisord管理杂乱的服务
  2. linux使用小技巧——screen
  3. rocketmq消费负载均衡--push消费为例
  4. 李宏毅线性代数笔记2: 线性方程组和数域
  5. x86分页机制——《x86汇编语言:从实模式到保护模式》读书笔记42
  6. 【小技巧】当你在写博客时突然误删或覆盖原文时怎么办?
  7. VTK:actors的类型用法实战
  8. [BZOJ2738]矩阵乘法
  9. springmvc ajax 页面无法重定向问题!!!!
  10. 现代软件工程 结对编程 (II) 电梯调度
  11. Python实例讲解 -- 磁盘文件的操作
  12. tny278功能参数_tny27-280中文资料.pdf
  13. cruzer php sandisk 闪迪u盘量产工具_闪迪u3量产工具下载|
  14. Intel CPU(i3、i5、i7、i9)型号、性能详细解读
  15. ABP框架—后台:后台程序发布至IIS(6)
  16. 用户注册及APP使用隐私协议
  17. jQuery LigerUI使用教程入门篇
  18. 使用CUPS打印服务
  19. uniAPP 自定义页面导航烂 - 搜索 APP有效
  20. “机器学习实战”刻意练习1/8周

热门文章

  1. 读写分离设计:复制延迟?其实是你用错了
  2. laravel路由不生效,404,除了/ 都不行,关于nginx环境下laravel除了默认路由都出现404报错的处理方法...
  3. 阿里云携手印度电信巨头 网络互连覆盖150个国家地区
  4. centos更新163源并升级内核
  5. 《JavaScript 模式》读书笔记
  6. 架构之路 参考MySpace
  7. ARP、RARP、ICMP、ping
  8. AWK学习笔记五:可执行AWK程序
  9. Qt5学习笔记之QQ登录界面四:界面布局
  10. 从零开始学习音视频编程技术--转自雲天之巔