博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java导出数据到word(二)
阅读量:5835 次
发布时间:2019-06-18

本文共 3215 字,大约阅读时间需要 10 分钟。

hot3.png

一、首先设计一个静态的HTML页面,根据需要导出word设计布局。

    
    
互动建议列表
互动标题
    
互动内容
    
创建人:张三  
创建时间:2016-02-03

    
意见列表    
        
            
                
创建人:                
张三                
创建时间:                
2016-02-03                                        
意见内容:                
1111                        

注:表格只要加边框就好,转换后自动会有内边框

171556_rRoK_1987856.png

二、把设计好的页面,改名为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"); //设置对于填充数据 Map
 dataMap = 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");

转载于:https://my.oschina.net/u/1987856/blog/609356

你可能感兴趣的文章
c_数据结构_队的实现
查看>>
jquery 选择器总结
查看>>
Qt设置背景图片
查看>>
【阿里云文档】常用文档整理
查看>>
java中的Volatile关键字
查看>>
前端自定义图标
查看>>
实验二
查看>>
独立开发一个云(PaaS)的核心要素, Go, Go, Go!!!
查看>>
MyBatis使用DEMO及cache的使用心得
查看>>
网站文章如何能自动判定是抄袭?一种算法和实践架构剖析
查看>>
【OpenCV学习】滚动条
查看>>
ofo用科技引领行业进入4.0时代 用户粘性连续8个月远甩摩拜
查看>>
兰州青年志愿者“中西合璧”玩快闪 温暖旅客回家路
查看>>
计划10年建10万廉价屋 新西兰政府:比想象中难
查看>>
甘肃发首版《3D打印职业教育教材》:校企合作育专才
查看>>
李娜入选国际网球名人堂 成亚洲第一人
查看>>
为找好心人抚养孩子 浙江一离婚父亲将幼童丢弃公园
查看>>
晚婚晚育 近20年巴西35岁以上孕妇增加65%
查看>>
读书:为了那个美妙的咔哒声
查看>>
jsp改造之sitemesh注意事项
查看>>