java word导入导出工具类
package com.shareworx.yjwy.utils; import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Set; import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse; import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.util.IOUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
/**
*
* @author zhenwei.shi
*
*/
public class ImpAndExpWord {
/**
* 根据表单导出word文档
* @author zhenwei.shi
* @param map 导入对象的键值对 KEY=模板标签 VALUE=替换模板标签的内容
* @param temlatePath word模板的全部路径 如:/templates/supplier/供应商管理表单.docs
* 此路径根据架构师搭建的资源环境而定,一般src/../../xx.docs
* @return
*/
public static void export(Map<String,String> params, String docPath){
String docName = docPath.substring(docPath.lastIndexOf("/")+1, docPath.length());
InputStream is = null;
ServletOutputStream out = null;
try{
//下面这个MAP 就是上面参数里的MAP 在此为了视觉更清晰 真正实施时 提前通过MAP传进来,不要在此new
params = new HashMap<String, String>();
params.put("AAAA","v1");//word模板上有个字符串叫k1,这里将模板上的k1替换为要赋值v1
params.put("k2","v2");//同上
params.put("k3","v3");//同上
params.put("k4","v4");//同上
params.put("k5","v5");//同上
params.put("k6","v6");//同上
params.put("k7","v7");//同上 is = ImpAndExpWord.class.getResourceAsStream("/"+docPath);
POIFSFileSystem pfs = new POIFSFileSystem(is);
HWPFDocument hwpf = new HWPFDocument(pfs);
Range range = hwpf.getRange(); Set<String> keys = params.keySet();
for(String key: keys){
range.replaceText(key, params.get(key));
}
HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
response.setCharacterEncoding("UTF-8");
response.setContentType("application/octet-stream; charset=UTF-8");
response.addHeader("Content-Disposition", "attachment; filename=\""+new String(docName.getBytes("GB2312"),"ISO8859-1")+"\";");//
out = response.getOutputStream(); hwpf.write(out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
} finally{
IOUtils.closeQuietly(out);
IOUtils.closeQuietly(is);
}
} }
word 图片

java word导入导出工具类的更多相关文章
- java Excel导入导出工具类
本文章,导入导出依赖提前定义好的模板 package com.shareworx.yjwy.utils; import java.io.File; import java.io.FileInputSt ...
- Java基础学习总结(49)——Excel导入导出工具类
在项目的pom文件中引入 <dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifac ...
- 一个基于POI的通用excel导入导出工具类的简单实现及使用方法
前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴. ...
- java中excel导入\导出工具类
1.导入工具 package com.linrain.jcs.test; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import ...
- 【原创】POI操作Excel导入导出工具类ExcelUtil
关于本类线程安全性的解释: 多数工具方法不涉及共享变量问题,至于添加合并单元格方法addMergeArea,使用ThreadLocal变量存储合并数据,ThreadLocal内部借用Thread.Th ...
- poi 导入/导出 工具类
package com.holy.util; import java.io.File; import java.io.FileOutputStream; import java.io.IOExcept ...
- java word转pdf 工具类
package com.elitel.hljhr.comm.web.main.controller; import java.io.File; import java.io.FileOutputStr ...
- java简易excel导入导出工具(封装POI)
Octopus 如何导入excel 如何导出excel github项目地址 Octopus Octopus 是一个简单的java excel导入导出工具. 如何导入excel 下面是一个excel文 ...
- 在java poi导入Excel通用工具类示例详解
转: 在java poi导入Excel通用工具类示例详解 更新时间:2017年09月10日 14:21:36 作者:daochuwenziyao 我要评论 这篇文章主要给大家介绍了关于在j ...
随机推荐
- Vim使用技巧(2) -- 插入模式技巧 【持续更新】
组合快捷键 Ctrl + h //删除前一个字母(同退格键) Ctrl + w //删除前一个单词 Ctrl + u //删除到行首 Esc //切换到普通模式 Ctrl + [ //切换到普通模式 ...
- Spring 3 MVC and JSR303 @Valid example
http://www.mkyong.com/spring-mvc/spring-3-mvc-and-jsr303-valid-example/ ———————————————————————————— ...
- python 左移右移 2个数交换
左移右移的能够使得数字*2或者/2 那*3怎么办,就左移一位然后再+ 经典面试题: 1.交换2个数,不用temp a=10 b=12 1.1 a = a + b = 22 b = a - b = ...
- Vmware私有云虚拟机(CentOS 6.5 OS)之根分区扩容
注:适用于未使用lvm管理的分区,目前仅在CentOS 6.5 上操作,其他系统尚未测试,请谨慎操作 一.查看当前分区状况 [root@disk-test ~]# df -h Filesystem ...
- cocos2dx-3.0(前言)
说了好久,告诉自己要開始学cocos2dx(在心理里告诉了好久),然后养成良好习惯,记录自己学习cocos2dx的过程.一个是怕自己忘记.还有一个是更加让自己理解透彻(或许哪天我写的好了,组合一下出一 ...
- json responseJson
private void doResoponseJson(HttpServletResponse resp,String jsonString){ Trace.logError(Trace.COMPO ...
- js intanceof 或 typeof
typeof和instanceof的区别 typeof和instanceof都可以用来判断变量,它们的用法有很大区别: typeof会返回一个变量的基本类型,只有以下几种:number,boolean ...
- (转)Unity3d游戏开场CG动画播放方式
1.在一个plane上播放 1 2 3 4 5 6 7 8 9 10 11 12 using UnityEngine; using System.Collections; public class M ...
- R-ArcGIS探秘(1)安装以及Sample执行
在今年的全球用户大会上,Esri官方发布了R-ArcGIS的官方演示样例,在ArcMap和ArcGIS pro中,直接通过Toolbox能够调用R的分析工具包,将R的分析能力直接作用在ArcGIS上面 ...
- hoj 2739 中国邮局问题
/*若原图的基图不连通, 或者存在某个点的入度或出度为 0 则无解. 统计所有点的入度出度之差 Di, 对于 Di > 0 的点, 加边(s, i, Di, 0); 对于 Di < 0 的 ...