java数据以文档形式导出(freemarker)
首先建需要的文档模板,然后替换文字用${text}代替
然后开始转换,直接贴代码
package com.baosight.mro.common.util;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.Version;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;
public class exportWord {
public static void test(){
Map<String,Object> dataMap = new HashMap<String, Object>();
try {
//编号
dataMap.put("id", "123456");
//日期
dataMap.put("date", new SimpleDateFormat("yyyy年MM月dd日").format(new SimpleDateFormat("yyyy-MM-dd").parse("2018-09-19")));
//附件张数
dataMap.put("number", 1);
//受款人
dataMap.put("payee", "张三");
//付款用途
dataMap.put("daxie", "test");
//大写金额
dataMap.put("xiaoxie", 1);
//小写金额
dataMap.put("yong", "100");
//Configuration 用于读取ftl文件
Configuration configuration = new Configuration(new Version("2.3.30"));
configuration.setDefaultEncoding("UTF-8");
/**
* 以下是两种指定ftl文件所在目录路径的方式,注意这两种方式都是
* 指定ftl文件所在目录的路径,而不是ftl文件的路径
*/
//指定路径的第一种方式(根据某个类的相对路径指定)
// configuration.setClassForTemplateLoading(this.getClass(), "");
//指定路径的第二种方式,我的路径是C:/a.ftl
configuration.setDirectoryForTemplateLoading(new File("D:/"));
//输出文档路径及名称
File outFile = new File("D:/测试付款文档导出.doc");
//以utf-8的编码读取ftl文件
Template template = configuration.getTemplate("测试付款文档.ftl", "UTF-8");
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "UTF-8"), 10240);
template.process(dataMap, out);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args)
{
test();
}
}
运行即可
所需freemarker.jar包下载地址
freemarkerhttps://download.csdn.net/download/weixin_43739125/12596734