java freemaker 导出word文档 高逼格教程
来源:互联网 发布:休眠状态关闭网络 编辑:程序博客网 时间:2024/06/09 23:51
本教程教大家如何用freemaker导出这么一份带表格,并且表头还要自动重复的word文档。
废话不多说 开造!
第一步:我的环境是spring+springMVC+mybatis 我知道没啥关系,但是不写的话我憋得慌。
@Override public void exportWord( HttpServletResponse response,HttpServletRequest request) throws IOException { Configuration configuration=new Configuration(); configuration.setDefaultEncoding("utf-8"); Map dataMap=new HashMap(); List table2=new ArrayList(); for(int i=0;i<91;i++ ){ Table2 t2=new Table2(); //table2 这个类只是演示用的 你要根据自己的业务具体的写属性 t2.setSeq(String.valueOf(i)); t2.setDetail("测试开发计划"+i); t2.setPerson("张三"+i); t2.setBegindate("2010-10-1"); t2.setFinishdate("2010-10-31"); t2.setRemark("备注信息"); t2.setS1(String.valueOf(i)); t2.setS2(String.valueOf(i)); t2.setS3(String.valueOf(i)); t2.setS4(String.valueOf(i)); t2.setS5(String.valueOf(i)); t2.setS6(String.valueOf(i)); t2.setS7(String.valueOf(i)); t2.setS8(String.valueOf(i)); t2.setS9(String.valueOf(i)); table2.add(t2); } dataMap.put("table2", table2); //设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库装载, //这里我们的模板是放在com.havenliu.document.template包下面 configuration.setClassForTemplateLoading(this.getClass(), "/com/wafa/webservices/"); //这个路径自己随便建一个就行了 Template t=null; Writer out = null; File outFile = null; try { t = configuration.getTemplate("qwbwin.ftl"); String name = "temp" + (int) (Math.random() * 100000) + ".doc"; outFile = new File(name); out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),"utf-8")); t.process(dataMap, out); } catch (Exception e) { e.printStackTrace(); } finally{ //finally下面的代码很重要 否则的话你导不出word 必须flush close 一下才行 if(out!=null){ try { out.flush(); out.close(); } catch (Exception e2) { e2.printStackTrace(); } } } //下面这些代码是为了你的 导出做准备的 request.setCharacterEncoding("UTF-8"); File file = null; InputStream fin = null; ServletOutputStream out1 = null; try { fin = new FileInputStream(outFile); response.setCharacterEncoding("utf-8"); response.setContentType("application/msword"); // 设置浏览器以下载的方式处理该文件默认名为Exhibition.doc response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode("1212" + ".doc", "UTF-8")); out1 = response.getOutputStream(); byte[] buffer = new byte[1024]; // 缓冲区 int bytesToRead = -1; // 通过循环将读入的Word文件的内容输出到浏览器中 while ((bytesToRead = fin.read(buffer)) != -1) { out1.write(buffer, 0, bytesToRead); } } finally { if (fin != null) fin.close(); if (out1 != null) out1.close(); if (outFile != null) outFile.delete(); // 删除临时文件 } }
这一段代码 我是写在 ****ServiceImpl中的 通过点击浏览器中的 “导出word”这个按钮来调用的,然后在浏览器中下载下来的,所以必须要加上finally中的内容那样才能下载出来。
table2里的属性 要根据自己的业务逻辑自己写 ,我这里随便写了几个
第二部: 配置word模板 “qwbwin.ftl”
首先选中要做表头的两行,单击右键-表格属性-行- 在各页顶端以标题形式重复出现, 这样的就能做到设置一次表头 ,各个页面都能出现了 。 word中的“111” 这是占位符 一会有用
把做好的word 模板保存成xml
把有“111”的地方替换成“ ${user.seq}” 这是freemaker的语法,当然其他的属性你要自己去替换成对应javabeen中你需要的属性 大体上就是这么个语法
然后另存为 “.ftl”后缀名的文件
复制到 包里就可以了
然后就可以在浏览器中调用了
๑乛◡乛๑ 不懂的加我qq 吻我吧
阅读全文
0 0
- java freemaker 导出word文档 高逼格教程
- Java语言结合Freemaker技术导出Word文档
- freemaker的word文档导出实例使用
- 利用freemaker导出word
- freemaker导出word
- freemaker创建word文档
- java 导出word文档
- Java导出Word文档
- java导出word文档
- Java 导出 Word 文档
- java导出word文档
- html导出 word文档教程
- freemaker导出word含图片格式
- Java导出Word文档案例
- Java POI导出Word文档
- 今天做了freemaker 导出word文档 的bug修复,解决 \n换行 问题
- FreeMaker+Xml导出word(含图片)
- FreeMaker+Xml导出word(含图片)
- MyEclipse2015修改项目Web-root
- ios ffmpeg h264 decode
- MYSQL慢查询(一):开启慢查询
- 机器视觉的情感判断实践(From Pixels to Sentiment: Fine-tuning CNNs for Visual Sentiment Prediction)
- kubernetes简介
- java freemaker 导出word文档 高逼格教程
- 序列模式挖掘算法之PrefixSpan
- JAVA值传递
- 安卓activity中onResume()的用处
- 【机器学习实战】第3章 决策树
- js的window.print打印页面 不打印网页中的“打印”按钮
- dubbo 序列化实例
- Vim实验楼笔记
- 【Python】Python条件语句