packagecom.shareworx.yjwy.utils;importjava.io.InputStream;importjava.util.HashMap;importjava.util.Map;importjava.util.Set;importjavax.servlet.ServletOutputStream;importjavax.servlet.http.HttpServletResponse;importorg.apache.poi.hwpf.HWPFDocument;importorg.apache.poi.hwpf.usermodel.Range;importorg.apache.poi.poifs.filesystem.POIFSFileSystem;importorg.apache.poi.util.IOUtils;importorg.springframework.web.context.request.RequestContextHolder;importorg.springframework.web.context.request.ServletRequestAttributes;/***
*@authorzhenwei.shi
**/
public classImpAndExpWord {/*** 根据表单导出word文档
*@authorzhenwei.shi
*@parammap 导入对象的键值对 KEY=模板标签 VALUE=替换模板标签的内容
*@paramtemlatePath word模板的全部路径 如:/templates/supplier/供应商管理表单.docs
* 此路径根据架构师搭建的资源环境而定,一般src/../../xx.docs
*@return
*/
public static void export(Mapparams, 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();
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= newPOIFSFileSystem(is);
HWPFDocument hwpf= newHWPFDocument(pfs);
Range range=hwpf.getRange();
Set 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);
}
}
}