JAVA
?/p>
Freemarker
生成
word
使用小结
肖教燎,
2016
?/p>
5
?/p>
2
?/p>
一、制?/p>
word
模板?/p>
1
?/p>
先使用记事本,将所需的文字录好,将所需的变量用英文字母表示(如
xinming,xinbie
?/p>
,变量尽量复杂一点,再拷入到
word
中,最好是
word2003
?/p>
2
?/p>
?/p>
word
另存?/p>
Word 2003 XML
格式?/p>
3
?/p>
可以?/p>
XML
文件用可以可美化的软件打开,以便更好搜索?/p>
(非必要?/p>
4
?/p>
搜索变量,如搜索?/p>
xinming
,将其改?/p>
${xinming}
,所有变量以此类推?/p>
5
?/p>
如果涉及到数据是一个集合,
则需遍历数据?/p>
通常是表格中的数据,
?/p>
word
模板中为一行,但要调用多行数据写入
word
。方法如下:搜索
<w:tr
,通常?/p>
到的第一个为表头?/p>
可能需要从找到的第二个开始;
?/p>
<w:tr
之前加上
<#list
?/p>
合名?/p>
as
替代?/p>
>
,如
<#list
users
as
user>
;搜索随后的
</w:tr>
,后面加?/p>
</#list>
;将集合里的变量用替代名替代,如
${user}
,如果该
list
的变量是一
个复杂变量,还可以是这种形式,如
${user.username}
?/p>
6
?/p>
将文件的扩展名改?/p>
ftl
?/p>
二、生?/p>
word
步骤及可能出现的问题?/p>
1
、下?/p>
freemarker
,下载网址?/p>
https://sourceforge.net/projects/freemarker/?source=typ_redirect
2
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
freemarker.template.Configuration
?/p>
freemarker.template.Template
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
一
?/p>
Map
?/p>
?/p>
?/p>
?/p>
?/p>
Template.process
方法,即生成新的
word
文档?/p>
3
、问?/p>
1
:经常出现有
FileNotFoundException
问题,模块文件默认是放在类所
在目录的
(即
src
的相关目录下?/p>
这点很奇怪,
一般我们会认为在项目根目录?/p>
?/p>
经研究官方的
API
,原?/p>
freemarker
在加载模板时,建议使?/p>
TemplateLoader
?/p>
定从哪个目录开始加载模板,
并且将模板加载在缓存中,
?/p>
TemplateLoader
的两
个实现类举例说明?/p>
一?/p>
FileTemplateLoader
文件模板加载器,可以通过文件的绝对路径加载模板:
Configuration cfg = new Configuration();
TemplateLoadertemplateLoader=null;