首先找一个world文件模板修改一下
类似如下图修改
修改完之后保存文件先保存xml文件之后修改ftl后缀名
保存成xml之后,有的时候改的有问题,需要使用文本查看器修改
手动的修改完整为${gongchenmingchen}这样的,所以需要辛苦检查一下
修改完之后
接下来就是操作文件模板生成world文件
以下是工具类
package com.example.demo;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import java.io.*;
import java.util.Map;
/**
* @author
* @date
* @apiNote 生成动态文档帮助类
*/
public class WordUtil {
private Configuration configuration = null;
/*
* 模板文件存放的目录
*/
private String baseDir;
/*
* 模板文件名称
*/
private String templateFile;
/*
* word生成的输出目录
*/
private String outputDir;
public WordUtil(){
configuration = new Configuration();
configuration.setDefaultEncoding("UTF-8");
}
/*
* <p>转换成word<br>
*/
public String createWord(Map<String,Object> dataMap){
configuration.setClassForTemplateLoading(this.getClass(), "");//模板文件所在路径
Template t = null;
try {
//得到模板文件
configuration.setDirectoryForTemplateLoading(new File(baseDir));
t = configuration.getTemplate(templateFile);
} catch (IOException e) {
e.printStackTrace();
}
File outFile = new File(outputDir+ System.currentTimeMillis() + ".doc"); //导出文件
Writer out = null;
try {
out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile)));
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
try {
t.process(dataMap, out); //将填充数据填入模板文件并输出到目标文件
return outFile.getPath();
} catch (TemplateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "文档生成失败";
}
public Configuration getConfiguration() {
return configuration;
}
public void setConfiguration(Configuration configuration) {
this.configuration = configuration;
}
public String getBaseDir() {
return baseDir;
}
public void setBaseDir(String baseDir) {
this.baseDir = baseDir;
}
public String getTemplateFile() {
return templateFile;
}
public void setTemplateFile(String templateFile) {
this.templateFile = templateFile;
}
public String getOutputDir() {
return outputDir;
}
public void setOutputDir(String outputDir) {
this.outputDir = outputDir;
}
}
工具使用demo
package com.example.demo;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Snippet {
public static void main(String[] args) {}
@GetMapping("/jj")
public void ff() {
// dd();
}
public static void dd(String jianshedanwei,String shigongdanwei,String gongchenmingchen,String shigongdidian,String path) {
// 调用word文档帮助类
WordUtil wordUtil = new WordUtil();
// 模板文件存放的目录
wordUtil.setBaseDir("C:/WordFile");
// 模板文件名称
wordUtil.setTemplateFile("hetongxieyi.ftl");
// word生成的输出目录
wordUtil.setOutputDir("文件输出路径");
// 初始化数据map
Map<String,Object> dataMap = new HashMap<>();
// 录入采购基本数据
dataMap.put("jianshedanwei", jianshedanwei);
dataMap.put("shigongdanwei", shigongdanwei);
dataMap.put("gongchenmingchen", gongchenmingchen);
dataMap.put("shigongdidian", shigongdidian);
//处理定价方式复选框
String oldPath = wordUtil.createWord(dataMap);
if (oldPath.equals("操作失败")){
System.out.println("操作失败");
}
//输出生成后的文件路径
System.out.println(oldPath);
}
}