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); } }