今天做了freemaker 导出word文档 的bug修复,解决 \n换行 问题
2016-01-28 16:51
513 查看
结合Freemaker导出文件
public void exportSimpleWord() throws Exception{ // 要填充的数据, 注意map的key要和word中${xxx}的xxx一致 Map<String,String> dataMap = new HashMap<String,String>(); dataMap.put("username", "张三"); dataMap.put("sex", "男"); //Configuration用于读取ftl文件 Configuration configuration = new Configuration(); configuration.setDefaultEncoding("utf-8"); /*以下是两种指定ftl文件所在目录路径的方式, 注意这两种方式都是 * 指定ftl文件所在目录的路径,而不是ftl文件的路径 */ //指定路径的第一种方式(根据某个类的相对路径指定) //configuration.setClassForTemplateLoading(this.getClass(),""); //指定路径的第二种方式,我的路径是C:/a.ftl configuration.setDirectoryForTemplateLoading(new File("C:/")); // 输出文档路径及名称 File outFile = new File("D:/test.doc"); //以utf-8的编码读取ftl文件 Template t = configuration.getTemplate("a.ftl","utf-8"); Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8"),10240); t.process(dataMap, out); out.close(); }
在公司做在线简历导出,用freemaker导出word文档,无法换行,问题,解决方法如下:
当数据保存到数据库的时候如何有换行,换行也会存储到数据库里面,当页面拿到这些数据的时候,这些换行会以 ‘\n’ 的形式实现页面上换行的效果,导入到word文档,如果继续使用\n肯定是没用的
使用freemaker的replace方法,使用word文档的标签,替换\n,实现word文档的换行.
实现的关键代码,其次就是细心认真,一点一点调试。
<#if showcase?&&showcase!=""> <w:t>${showcase?replace("\n", "</w:t> </w:r> <w:bookmarkStart w:id=\"0\" w:name=\"_GoBack\"/> <w:bookmarkEnd w:id=\"0\"/> </w:p> <w:p w:rsidR=\"009025F9\" w:rsidRPr=\"002A1E10\" w:rsidRDefault=\"009025F9\" w:rsidP=\"00514E73\"> <w:pPr> <w:spacing w:before=\"42\" w:after=\"42\" w:line=\"241\" w:lineRule=\"atLeast\"/> <w:rPr> <w:rFonts w:ascii=\"微软雅黑\" w:eastAsia=\"微软雅黑\" w:hAnsi=\"微软雅黑\" w:cs=\"Tahoma\"/> <w:color w:val=\"444444\"/> <w:sz w:val=\"21\"/> <w:szCs w:val=\"21\"/> </w:rPr> </w:pPr> <w:r w:rsidRPr=\"002A1E10\"> <w:rPr> <w:rFonts w:ascii=\"微软雅黑\" w:eastAsia=\"微软雅黑\" w:hAnsi=\"微软雅黑\" w:cs=\"Tahoma\" w:hint=\"eastAsia\"/> <w:color w:val=\"444444\"/> <w:sz w:val=\"21\"/> <w:szCs w:val=\"21\"/> </w:rPr> <w:t>")}</w:t> </w:r> <w:bookmarkStart w:id="0" w:name="_GoBack"/> <w:bookmarkEnd w:id="0"/> </w:p> <#else> <w:t></w:t> </w:r> <w:bookmarkStart w:id="0" w:name="_GoBack"/> <w:bookmarkEnd w:id="0"/> </w:p> </#if>
相关文章推荐
- 设计模式(4)--Builder 建造者(构建器)
- LBP特征
- zookeeper
- 实现对象的复用——享元模式(一):享元模式概述(上)
- MFC操作ini文件方法
- qml的states属性
- VideoView小试牛刀
- git使用笔记
- SSH服务恶意代码分析
- c#之Redis实践list,hashtable
- 使用Git Gui从Bonobo服务器中克隆Repository(仓库)
- 仿微博框架
- 调用JAVA API 对 HDFS 进行文件的读取、写入、上传、下载、删除等操作
- 蓝桥杯基础练习 阶乘计算(简单模拟)
- Unity渲染队列
- JUnit3原理分析二(框架结构与源码分析)
- ConvnetJS源代码分析第三篇
- Java钩子的简单实例
- 学业竞技实业网址窗口
- Android自定义ViewGroup