前言
有一个需求就是给定一个正确格式的 Word 文档模板,要求通过动态赋值方式,写入数据并新生成 该模板格式的 Word 文档。这很明显使用 Java+freemarker 方式来实现颇为简单。
一、导入依赖
<!-- freemarker -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.30</version>
</dependency>
二、存入模板
(1)准备好一个正确格式的 Word 文档(测试文档 - 原版.docx)
(2)将其另存为xml文件(测试文档 - 原版.xml)
(3)随便找个在线 XML 格式化工具处理一下(测试文档 - 原版【格式化】.xml)
(4)将该 xml 模板存放在 /src/main/resources/templates/freemaker/ 目录中
(5)使用 EL 表达式对模板进行赋值
三、Xml 转 Doc/Docx
(1)/src/main/java/org/example/test/Main.java文章来源:https://www.toymoban.com/news/detail-706732.html
import freemarker.template.Configuration;
import freemarker.template.Template;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
public class ConvertXmlToDoc {
/**
* Xml 转 Doc
*/
private static void tranform() {
Map<String, Object> map = new HashMap<>();
map.put("question_1","一加一等于几");
map.put("answer_1","二");
map.put("question_2","什么叫余弦定理");
map.put("answer_2","余弦定理,欧氏平面几何学基本定理。余弦定理是描述三角形中三边长度与一个角的余弦值关系的数学定理,是勾股定理在一般三角形情形下的推广,勾股定理是余弦定理的特例。");
try {
Configuration configuration = new Configuration(Configuration.VERSION_2_3_20);
configuration.setClassForTemplateLoading(ConvertXmlToDoc.class, "/templates/freemaker"); // 指定 xml 模板存放的位置,即:项目目录/src/main/resources/templates/freemaker
// 获取 xml 模板
Template template = configuration.getTemplate("测试文档 - 原版【格式化】.xml");
// 输出 doc/docx 文件
File outFile = new File("D:/" + "测试文档 - 修订版【重制版】" + ".docx");
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile)));
template.process(map, out);
System.out.println("转换成功");
} catch (Exception e) {
System.out.println("转换失败");
e.printStackTrace();
}
}
public static void main(String[] args) {
tranform();
}
}
四、运行效果
文章来源地址https://www.toymoban.com/news/detail-706732.html
到了这里,关于基于Java+freemarker实现动态赋值以及生成Word文档的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!