这两天的任务是根据漏洞扫描结果和各二级单位的系统备案情况,生成一份全校级别的安全通告,并将安全通告以Word的形式下载下来以供查看。为了完成项目又接触了一个新东西,FreeMarker。
FreeMarker是基于模板和要改变的数据的,作用是生成输出文本。那么首先需要使用FreeMarker Template Language来编写模板,在模板中需要显示的数据使用${data}代替。然后在java中编写一个类,并且实例化一个对象,使用这个对象,为要显示的数据赋值,object.setData(xxx)。最后生成文档并下载。
下面是这次项目中完成的一个例子。使用FreeMarker,需要先导入相应的jar包freemarker-2.3.22.jar
一、新建模板
因为要求最终生成Word文档,所以直接用Word进行最初的模板编写,然后再转化成.ftl格式。这样,我们在Word文档中设置好文档的格式和插值,比直接写一个.ftl的文档要简单多了。
图1是截取的项目中最终需要生成的文档的一部分,其中标红字段是随着期刊和日期变化的,即插值部分,其余部分为文档部分。插值部分需要使用${XXX}代替,如图2所示。
图1
图2
二、将新建好的Word文档另存为Word

本文介绍了如何使用FreeMarker来生成Word文档。首先,通过编写FreeMarker模板并在Word中设定格式。接着,将Word转为XML再用XML编辑器检查并保存为.ftl。然后,为模板中的插值赋值。最后,通过Java的WordUtils类创建Word文档。
最低0.47元/天 解锁文章
226

被折叠的 条评论
为什么被折叠?



