Java通过FreeMarker.jar模板生成word文档

一.准备模板文件

    1.打开word,在需要填充数据的位置占位字段

    2.将word另存为.xml文件,然后将扩展名改为.ftl

    3.打开生成的.ftl文件,搜索之前的所有占位字段用${}包裹,至此模板文件完工

    4.将模板文件放入项目根目录,导入freemarker.jar包

二.核心代码:

/**
 * 通过freeMark模板生成word
 * 
 * @User: xiemiao
 * @Date: 2018年7月16日 下午10:06:29
 */
public class FreeMarkWord {

    /**
     * freemarker模板配置
     */
    private Configuration configuration;

    /**
     * 构造freemarker配置文件
     * 
     * @param templatePath
     *            模板文件路径
     */
    public FreeMarkWord(String templatePath) {
	// 初始化freemarker配置
	configuration = new Configuration();
	configuration.setDefaultEncoding("utf-8");
	configuration.setClassForTemplateLoading(this.getClass(), templatePath);
    }

    /**
     * 创建word文档
     * 
     * @param dataMap
     *            填充数据
     * @param templateName
     *            模板文件名
     * @param outPath
     *            输出路径
     * @throws IOException
     * @throws TemplateException
     */
    public void createWord(Map<String, Object> dataMap, String templateName, String outPath) throws IOException, TemplateException {
	// 通过模板名称获取模板对象
	Template template = configuration.getTemplate(templateName);

	//生成路径文件
	File outFile = new File(outPath);
	
	// 创建文件输出流
	Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "UTF-8"));

	// 创建word
	template.process(dataMap, out);
	out.close();
    }
}
public class TestWord {
    public static void main(String[] args) {
	try {
	    FreeMarkWord freeMarkWord = new FreeMarkWord("/");
	    // 生成数据
	    HashMap<String, Object> dataMap = new HashMap<>();
	    dataMap.put("LOAN_MONEY", "50000");
	    dataMap.put("TIME_LIMIT", "6个月");
	    dataMap.put("OCCUPATION", "学生");
	    dataMap.put("NAME", "张三");
	    dataMap.put("SEX", "女");
	    dataMap.put("NATION", "汉");
	    dataMap.put("ID_NUM", "429004111122221111");
	    dataMap.put("PHONE", "18888888888");
	    dataMap.put("PHONE_SERVICE_PWD", "123456");
	    dataMap.put("PHONE_PLACE", "武汉");
	    dataMap.put("OPERATOR", "电信");
	    dataMap.put("IS_REAL_NAME", "是");
	    dataMap.put("PHONE_TIME", "半年");
	    dataMap.put("QQ", "123456789");
	    dataMap.put("WX", "zz223");
	    dataMap.put("IS_OVERDUE", "否");
	    dataMap.put("HAVE_CUR_OVERDUE", "无");
	    dataMap.put("IS_OTHER_LOAN", "否");
	    dataMap.put("HAVE_CREDIT_CARD", "有");
	    dataMap.put("EDUCATION", "本科");
	    dataMap.put("ZHIMA_SCORE", "666");
	    dataMap.put("PAY_DAY", "每月15日");
	    dataMap.put("GRADUATE_TIME", "2019-08-08");
	    dataMap.put("ID_ADDRESS", "湖北省武汉市洪山区XXXXXX");
	    dataMap.put("NOW_ADDRESS", "湖北省武汉市洪山区XXXXXX");

	    freeMarkWord.createWord(dataMap, "贷款申请表.ftl", "C:/Users/pc/Desktop/a.doc");
	} catch (IOException | TemplateException e) {
	    e.printStackTrace();
	}
    }
}

项目下载地址:点我下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值