org.freemarker freemarker2.3.31
@GetMapping("/test")
public void test() {
Map dataMap = new HashMap<>();
///姓名
dataMap.put("name", "张三");
CreateWordUtil.createWord(dataMap);
}
test.ftl 放入 resource/templates文件夹中
import freemarker.template.Configuration;
import freemarker.template.Template;
import org.springframework.util.ResourceUtils;
import java.io.*;
import java.util.Map;
public class CreateWordUtil {
public static void createWord(Map dataMap) {
try {
//Configuration 用于读取ftl文件
Configuration configuration = new Configuration();
configuration.setDefaultEncoding("utf-8");
//获取根目录
File path = new File(ResourceUtils.getURL("classpath:").getPath());
if (!path.exists()) path = new File("");
System.out.println("path:" + path.getAbsolutePath());
//如果上传目录为/templates/,则可以如下获取:
File upload = new File(path.getAbsolutePath(), "templates/");
if (!upload.exists()) upload.mkdirs();
System.out.println("upload url:" + upload.getAbsolutePath());
//指定路径的第一种方式,
//configuration.setClassForTemplateLoading();
//指定路径的第二种方式,具体路径
configuration.setDirectoryForTemplateLoading(upload);
//输出文档路径及名称
File outFile = new File("test.doc");
//以utf-8的编码读取ftl文件
Template template = configuration.getTemplate("test.ftl", "utf-8");
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8"), 10240);
template.process(dataMap, out);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
创建模板文件-test.ftl
1. 创建word
2. 另存为 Xml文件
3. 修改拓展名重命名 ftl
编辑变量,根据自己的业务需求创建动态变量,变量语法可参考Freemark 语法



