poi导出word模板项目实例(一个文件)
在页面上填写值,然后导出到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模板项目实例(一个文件)相关推荐
- poi导出word模板
**poi导出word模板段落处理 流程: 1:读取文档:` //获取docx解析对象 XWPFDocument document = new XWPFDocument(POIXMLDocument. ...
- 使用POI 导出word模板文件
maven依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</art ...
- 利用poi读取word模板文件生成新的word文档
利用poi读取word模板文件生成新的word文档 利用poi读取word模板文件,并回填逻辑数据,生成并导出需要的word文档源码.解决模板读取异常问题,提供wordUtils工具类(各种功能实现) ...
- Java POI导出word文件及生成表格
HWPF是处理 Microsoft Word 97(-2007) .doc文件格式,它还为较旧的Word 6和Word 95文件格式提供了有限的只读支持.包含在poi-scratchpad-XXX.j ...
- java word模板poi生成文件_利用poi读取word模板文件生成新的word文档
利用poi读取word模板文件生成新的word文档 利用poi读取word模板文件,并回填逻辑数据,生成并导出需要的word文档源码.解决模板读取异常问题,提供wordUtils工具类(各种功能实现) ...
- Java使用poi根据word模板进行导出(有效可行)
最近一直在做与导出这部分相关的事情,有一个就是需要将数据库中查询到的信息写入到word模板中再进行导出.下面的代码直接复制使用即可,没啥毛病,无论是段落中的,还是表格中的,都是有效的.使用过程中遇到的 ...
- POI导出word文件中表格合并方法(行合并,列合并)
项目中遇到记录一下 POI导出word文件中表格合并方法(行合并,列合并) . // word表格跨列合并单元格//row 指定行.fromCell 开始列数.toCell 结束列数.public v ...
- poi导出word文件(带表格)
poi导出word文件(带表格) 一.背景介绍 现有业务需求根据前端页面上所选的时间和列,来生成word表格,方便打印. 二.POM <dependency><groupId> ...
- SpringBoot Poi导出word,浏览器下载
文章目录 SpringBoot Poi导出word,浏览器下载 1.引依赖: 2.写代码(生成本地word): 3.返回给浏览器下载 1.如何返回给浏览器让它下载 4.解决方案 5.为什么没使用eas ...
- org.apache.poi往word模板中填充数据(word2003)
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能.通过字面意思,我们大概知道这个API是可以用来做 j ...
最新文章
- 用supervisord管理杂乱的服务
- linux使用小技巧——screen
- rocketmq消费负载均衡--push消费为例
- 李宏毅线性代数笔记2: 线性方程组和数域
- x86分页机制——《x86汇编语言:从实模式到保护模式》读书笔记42
- 【小技巧】当你在写博客时突然误删或覆盖原文时怎么办?
- VTK:actors的类型用法实战
- [BZOJ2738]矩阵乘法
- springmvc ajax 页面无法重定向问题!!!!
- 现代软件工程 结对编程 (II) 电梯调度
- Python实例讲解 -- 磁盘文件的操作
- tny278功能参数_tny27-280中文资料.pdf
- cruzer php sandisk 闪迪u盘量产工具_闪迪u3量产工具下载|
- Intel CPU(i3、i5、i7、i9)型号、性能详细解读
- ABP框架—后台:后台程序发布至IIS(6)
- 用户注册及APP使用隐私协议
- jQuery LigerUI使用教程入门篇
- 使用CUPS打印服务
- uniAPP 自定义页面导航烂 - 搜索 APP有效
- “机器学习实战”刻意练习1/8周