java导出2007版word(docx格式)freemarker + xml 实现
Freemarker+xml生成docx 原理概述:word从2003版就支持xml格式,而freemarker是java封装的模板工具,两者结合也就是在xml中需要动态生成的部分调用freemarker的指令(类似于EL表达式),来生成我们需要的数据,再用流输出文件,就达到了写word的效果。 生成word的基本流程图如下: 1. 生成docx模板和xml模板 生成docx模板 按照项目需要生成固定格式的docx格式的模板。 为方便测试做了个简单的例子,docx模板的内容如下图: 生成xml模板 从docx模板中取出word/document.xml,由于docx属于zip格式,可以用winrar打开,如图: 除word文件夹外其它文件为基本配置文件,取出word/document.xml(存放word文件的文本内容)如下图: 需要把document.xml解压出来,修改里面需要从数据库导出的数据用freemarker的指令代替,例如${test} 同时可以用遍历函数 替换完成后相当于生成了 xml 模板 生成的Xml模板: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <w:document xmlns:wpc="http://schemas.microsoft.com/office/word/2010