一、首先设计一个静态的HTML页面,根据需要导出word设计布局。
互动建议列表 互动标题
互动内容创建人:张三 创建时间:2016-02-03意见列表
创建人: | 张三 | 创建时间: | 2016-02-03 | 意见内容: | 1111 |
注:表格只要加边框就好,转换后自动会有内边框
二、把设计好的页面,改名为ftl后缀
三、后台代码
(1)把poi相关依赖包,放入项目中
(2)具体实现
/** * *【导出doc文档】
*条件:
*备注:
*例子:
*日志:
* * @author:zhu [2016年2月3日 下午5:11:04] */ public void outOfDocGeneral() { StringWriter stringOut = new StringWriter(); ServletOutputStream out = null; ByteArrayInputStream bais = null; try { //获取数据 hdJyList = hdJyService.findByCreater(hd.getId(), getCurrentUser().getId()); hd = hdService.load(hd.getId()); Configuration configuration = new Configuration(); configuration.setDefaultEncoding("UTF-8"); //获取模板根路径 configuration.setClassForTemplateLoading(this.getClass(), "../../../../../docTemplate"); //设置对于填充数据 MapdataMap = new HashMap (); dataMap.put("title", hd.getHdbt()); dataMap.put("creater", hd.getLrr()); org.jsoup.nodes.Document doc = Jsoup.parse(hd.getHdnr()); Elements eles = doc.getElementsByTag("img"); String url = getUrl(); for (Element element : eles) { element.attr("src", url + element.attr("src")); } dataMap.put("content", doc.html()); dataMap.put("createTime", hd.getLrsj()); dataMap.put("hdJyList", hdJyList); //获取模板 Template temp = configuration.getTemplate("hdJyList.ftl"); //填充模板 temp.process(dataMap, stringOut); //获取整个HTML字符串 String content = stringOut.toString(); byte b[] = content.getBytes("UTF-8"); bais = new ByteArrayInputStream(b); POIFSFileSystem poifs = new POIFSFileSystem(); DirectoryEntry directory = poifs.getRoot(); DocumentEntry documentEntry = directory.createDocument("WordDocument", bais); out = super.getWWResponse().getOutputStream();// 取得输出流 super.getWWResponse().reset();// 清空输出流 super.getWWResponse().setHeader("Content-disposition", "attachment; filename=proposal.doc");// 设定输出文件头 super.getWWResponse().setContentType("application/vnd.ms-word;charset=UTF-8");// 定义输出类型 poifs.writeFilesystem(out); bais.close(); } catch (Exception ex) { ex.printStackTrace(); } finally { if (bais != null) { try { bais.close(); } catch (IOException e) { e.printStackTrace(); } } if (stringOut != null) { try { stringOut.close(); } catch (IOException e) { e.printStackTrace(); } } if (out != null) { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } } /** * * 【获取当前请求url】
*条件:
*备注:
*例子:
*日志:
* * @return * @author:zhu [2016年2月3日 下午5:00:38] */ private String getUrl() { String url = ""; url = super.getWWRequest().getScheme() + "://" + super.getWWRequest().getServerName() + ":" + super.getWWRequest().getServerPort() + super.getWWRequest().getContextPath() + "/"; return url; }
四、页面
//后缀有个 .doc,页面就不会打开,自动下载关闭页面window.open (url+"/hdAction!outOfDocGeneral.shtml?file=proposal.doc");