先贴一段代码,这是根据网上的代码稍作修改后可以直接运行
需要下载freemarker.jar
maven的项目直接引用
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.23</version>
</dependency>
package com.yh.ibd.web;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import com.yh.ibd.model.HL;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateExceptionHandler;
import sun.misc.BASE64Encoder;
public class WordGenrate {
public static void main(String [] args) throws IOException{
HL hl = new HL();
hl.setIhlCode("aaaaa");
hl.setIhlId("123");
Map<String, Object> dataMap = getDataMap(hl);
createDoc(dataMap);
}
public static void createDoc(Map<String, Object> dataMap){
try{
Configuration configure = null;
configure= new Configuration();
configure.setDefaultEncoding("utf-8");
//加载需要装填的模板
Template template = null;
//加载模板文件
configure.setClassForTemplateLoading(WordGenrate.class,"");//这里是指定模板的位置,“”为空说明是在当前类的同级目录下
//设置对象包装器
configure.setObjectWrapper(new DefaultObjectWrapper());
//设置异常处理器
configure.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
//定义Template对象,注意模板类型名字与downloadType要一致
template= configure.getTemplate("hlTemplate2.xml","UTF-8");//调用整理好的模板文件
//输出文档
File outFile = new File("E:\\wenjian\\hlTemplate.doc");//这里是生成好的word文档的输出地址
Writer out = null;
out= new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),"utf-8"));
template.process(dataMap,out);
outFile.delete();
}catch (Exception e) {
e.printStackTrace();
}
}
private static Map<String, Object> getDataMap(HL hl){
Map<String, Object> dataMap = new HashMap<String, Object>();
dataMap = setObjToMap(hl);
return dataMap;
}
public static Map<String,Object> setObjToMap(Object obj){
Map<String,Object> dataMap = new HashMap<String,Object>();
Class c;
try {
c = Class.forName(obj.getClass().getName());
Method[] methods = c.getMethods();
for(int i=0,l=methods.length;i<l;i++){
String method = methods[i].getName();
System.out.println("The method is:" + method);
if(method.startsWith("get")){
Object value = methods[i].invoke(obj);
if(value != null){
if(value.getClass().getClassLoader() != null){ //处理自定义的对象类型
setObjToMap(value);
}
String key = method.substring(3);
key = key.substring(0, 1).toLowerCase() + key.substring(1);
/*if("java.util.Date".equals(value.getClass().getName())){
value = DateUtil.dateToString((Date)value);
}*/
dataMap.put(key, value);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return dataMap;
}
}