1、需要下载freemarker相关jar包
在web项目下可以通过以下方式来生成word
package com.jieyuechina.test;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.jieyuechina.domain.model.CreditPool;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateExceptionHandler;
public class DocumentHandler {
private Configuration configuration = null;
public DocumentHandler() {
configuration = new Configuration();
configuration.setDefaultEncoding("utf-8");
}
public void createDoc() {
//要填入模本的数据文件
Map<String,Object> dataMap=new HashMap<String,Object>();
getData(dataMap);
//设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库装载,
//这里我们的模板是放在com.havenliu.document.template包下面
Configuration configuration = new Configuration();
//加载freemarker模板文件
try {
configuration.setDirectoryForTemplateLoading(new File("E:\\javasoft\\Tomcat7.0.27\\Tomcat\\webapps\\jieyuechina\\WEB-INF\\views"));
configuration.setDefaultEncoding("utf-8");
//设置对象包装器
configuration.setObjectWrapper(new DefaultObjectWrapper());
//设计异常处理器
configuration.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
//获取指定模板文件
Template template = configuration.getTemplate("out.ftl");
//定义输入文件,默认生成在工程根目录
Writer out = new OutputStreamWriter(new FileOutputStream("D:/outFile2.doc"),"UTF-8");
//写入目标文件中
//写的是freemarker 生成模板
template.process(dataMap, out);//写入目标文件
} catch (Exception e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
//在main中可以通过这种方式测试
// //configuration.setClassForTemplateLoading(this.getClass(), "/com/jieyuechina/template");
// Template t=null;
// try {
// //test.ftl为要装载的模板
// t = configuration.getTemplate("word.ftl");
// System.out.println(t);
// } catch (IOException e) {
// e.printStackTrace();
// }
// //输出文档路径及名称
// File outFile = new File("D:/outFile.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();
// }
}
/**
* 注意dataMap里存放的数据Key值要与模板中的参数相对应
* @param dataMap
*/
private void getData(Map<String,Object> dataMap)
{
dataMap.put("num", "861300100100004-001");
dataMap.put("method", "这是测试");
dataMap.put("name", "账单");
List<CreditPool> poos = new ArrayList<CreditPool>();
for (int i = 0; i <10; i++) {
CreditPool poo = new CreditPool();
poo.setAgreement("1");
poo.setContractamount(33);
poos.add(poo);
}
dataMap.put("table1", poos);
}
}