代码如下
import freemarker.template.Configuration;
import freemarker.template.Template;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;
import java.util.Map;
public class FreemarkerUtil {
/**
* 使用 Freemarker 生成 Word 文件
* @param templateName 模板文件路径名称
* @param filePath 生成的文件路径以及名称
* @param dataModel 填充的数据对象
*/
public static void exportWord(String templateName, String filePath, Map<String, Object> dataModel) {
generateFile(templateName, filePath, dataModel);
}
/**
* 使用 Freemarker 生成指定文件
* @param templateName 模板文件路径名称
* @param filePath 生成的文件路径以及名称
* @param dataModel 填充的数据对象
*/
private static void generateFile(String templateName, String filePath, Map<String, Object> dataModel) {
try {
// 1、创建配置对象
Configuration config = new Configuration(Configuration.VERSION_2_3_30);
config.setDefaultEncoding("utf-8");
config.setClassForTemplateLoading(FreemarkerUtil.class, "/");
// 2、获取模板文件
Template template = config.getTemplate(templateName);
// 3、创建生成的文件对象
File file = new File(filePath);
FileOutputStream fos = new FileOutputStream(file);
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(fos, StandardCharsets.UTF_8));
// 4、渲染模板文件
template.process(dataModel, writer);
// 5、关闭流
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}