java根据模板生成world文件

首先找一个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);
	    
	   }
	
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜空繁星vv

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值