java根据模板生成word文件

18 篇文章 3 订阅
8 篇文章 0 订阅

准备word模板,将里面需要写入的内容以${变量名}形式表现。如图

保存word。另存为xml格式文件。

 

将model.xml更改后缀名改为model.ftl。这个文件我存在在E盘的根目录。等下需要加载该文件,所以文件路径尽量不要带中文。

代码工作,首先引入依赖

<dependency>
			<groupId>org.freemarker</groupId>
			<artifactId>freemarker</artifactId>
		</dependency>

代码


import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

public class WpsUtil {


    private Configuration configuration = null;

    public WpsUtil(){
        configuration = new Configuration();
        configuration.setDefaultEncoding("UTF-8");
    }

    public static void main(String[] args) {
        WpsUtil test = new WpsUtil();
        test.createWord();
    }

    public void createWord(){
        Map<String,Object> dataMap=new HashMap<String,Object>();
        getData(dataMap);
        try {
            configuration.setDirectoryForTemplateLoading(new File("E:\\")); //扫描路径
        } catch (IOException e) {
            e.printStackTrace();
        }
        Template t=null;
        try {
            t = configuration.getTemplate("model.ftl"); //文件名
        } catch (IOException e) {
            e.printStackTrace();
        }
        File outFile = new File("E:\\temp\\"+Math.random()+".doc");
        Writer out = null;
        try {
            out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile)));
        } catch (FileNotFoundException e1) {
            e1.printStackTrace();
        }

        try {
            t.process(dataMap, out);
        } catch (TemplateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /*
    模板文档里对应的字段设置值
    */
    private void getData(Map<String, Object> dataMap) {
        dataMap.put("activityName", "测试活动");
        dataMap.put("sTime", "2012-12-12");
        dataMap.put("eTime", "2022-12-12");
        dataMap.put("month", "2");
        dataMap.put("day", "13");
        dataMap.put("activityTotalCash", "1000");
        dataMap.put("activityCash", "100");

    }

}

测试已成功生成文件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值