FreeMarker 导出word步骤

来源:互联网 发布:多拨 锐捷 哈工大网络 编辑:程序博客网 时间:2024/06/11 08:14
1、先把准备好的word模板打开,另存为xml格式。注:word的编码格式最好是UTF-8的。2、用xml编辑工具打开看有没有需要修改的地方。3、在2进行完以后再次另存为ftl格式,这个格式才是我们所需要的。4、把ftl文件放入到自己需要的项目里去进行加载就行了。代码://加载文件根目录(指放在webroot下面的),setClassForTemplateLoading(this.getClass(), "/template/")是加载src下面的;        TemplateLoader loader = new FileTemplateLoader(new File(filePath));      //这里我是加载Webroot下面的*.ftl文件          configuration.setTemplateLoader(loader);          String paths = "WEB-INF/template/word_cn.ftl";        Template t = configuration.getTemplate(paths,"utf-8");        ByteArrayOutputStream bos = new ByteArrayOutputStream();        Writer out = new BufferedWriter(new OutputStreamWriter(bos,"utf-8")); Map<String, Object> map = new HashMap<String, Object>();//创建mapString header = "只是头部";map.put("header", header);// 存放键值对        //ftl的取值,这里我截取一部分<w:tc>     <w:tcPr>      <w:tcW w:w="0" w:type="auto"/>      <w:shd w:val="clear" w:color="auto" w:fill="auto"/>      <w:noWrap/>           </w:tcPr>     <w:p wsp:rsidR="00A6218E" wsp:rsidRPr="00393607" wsp:rsidRDefault="00A6218E" wsp:rsidP="00A6218E">      <w:pPr>       <w:spacing w:before="40" w:after="40"/>       <w:jc w:val="right"/>       <w:rPr>        <w:rFonts w:ascii="Adobe 黑体 Std R" w:fareast="Adobe 黑体 Std R" w:h-ansi="Adobe 黑体 Std R"/>        <wx:font wx:val="Adobe 黑体 Std R"/>        <w:sz w:val="20"/>        <w:sz-cs w:val="20"/>       </w:rPr>      </w:pPr>      <w:r wsp:rsidRPr="00393607">       <w:rPr>        <w:rFonts w:ascii="Adobe 黑体 Std R" w:fareast="Adobe 黑体 Std R" w:h-ansi="Adobe 黑体 Std R"/>        <wx:font wx:val="Adobe 黑体 Std R"/>        <w:sz w:val="20"/>        <w:sz-cs w:val="20"/>       </w:rPr>       <w:t>${header}</w:t> <#-- 取map的键值 -->      </w:r>     </w:p>    </w:tc>//最后记得放入到进程去t.process(map, out);//结束。

如果谁需要更多的信息,可以留言。