JAVA利用Freemarker(替换)生成DOC文件

匿名 (未验证) 提交于 2019-12-02 21:53:52

素材

1、Microsoft Office Word

2、Xml文档编辑器(Like:Firstobject free XML editor,传送门

3、freemarker的jar包(可以通过maven引入,或去下载

4、你熟悉的java编程工具(

步骤

1、编写模板

在word中编辑你要的模板,将需要替换的信息做好标记(自己要记住,写啥都可以,如图红色区域)

2、另存为word 2003 XML文档(为了保证兼容性)


3、用Firstobject free XML editor制作模板

找到替换文本,如果被打散,就删掉多余内容,如下图(“这里”往后到“填写姓名”之前都删掉)


然后替换这句话为${name},都为英文字符,“name”为你Map中的key值,自然最后此处会填写对应的value值


注意红色的区域 ">${name}<",两个尖括号之间不要有空格之类的符号。同样替换其他内容,然后保存,修改此文件后缀为:.ftl。这样模板文件就制作好了。

4、测试

public class WordUtils {      private static final String templateFolder = "./in/";       public static void main(String[] args) {          try {              // 配置文件             Configuration cfg = new Configuration();             // 字符编码             cfg.setDefaultEncoding("utf-8");             // 模板目录             cfg.setDirectoryForTemplateLoading(new File(templateFolder));             // 加载模板文件             Template tpl = cfg.getTemplate("test.ftl");             // 准备数据             Map<String, String> data = new HashMap<>();             data.put("name", "张三丰");             data.put("age", "27");              // 生成文件             String outFIle = "./out/doc/test.doc";             File docFile = new File(outFIle);             FileOutputStream fos = new FileOutputStream(docFile);             Writer out = new BufferedWriter(new OutputStreamWriter(fos, "utf-8"), 10240);             tpl.process(data, out);             System.out.println("生成word文档:" + docFile.getAbsolutePath());          }catch (Exception e){             e.printStackTrace();         }       } }

5、结果


In the end:如果要引入图片需要进过BASE64编码

参考资料:

1、https://www.cnblogs.com/zwqh/p/7182953.html

2、https://www.jianshu.com/p/f58802a29d8a


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!