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(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 = new POIFSFileSystem(is); HWPFDocument hwpf = new HWPFDocument(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); } }}
word 图片