java 模板导出word(含图片)
https://www.cnblogs.com/xiaotian-222/p/7017619.html
分为以下三个步骤:
1.先制作word模板
2.将该文档另存为 xml 文件
3.打开xml 文件
将对应的字段替换,比如
4.将xml文件保存成ftl格式的文档
5.相应的代码:
package org.lq.ssm.gp.controller;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
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 sun.misc.BASE64Encoder;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public class wordController {
private Configuration configuration = null;
public wordController(){
configuration = new Configuration();
configuration.setDefaultEncoding("UTF-8");
}
public static void main(String[] args) {
wordController test = new wordController();
test.createWord();
}
public void createWord(){
Map<String,Object> dataMap=new HashMap<String,Object>();
getData(dataMap);
System.out.println(this.getClass().getResource("/util"));
configuration.setClassForTemplateLoading(this.getClass(), "/controller"); //FTL文件所存在的位置
Template t=null;
try {
t = configuration.getTemplate("baodan2.ftl"); //文件名
} catch (IOException e) {
e.printStackTrace();
}
File outFile = new File("H:/baodan/baodan.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();
}
}
private void getData(Map<String, Object> dataMap) {
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
dataMap.put("name", "");
dataMap.put("username", "");
dataMap.put("userzjh", "");
dataMap.put("userQygs", "");
dataMap.put("image", getImageStr());
}
private String getImageStr() {
String imgFile = "H:\\JT1.jpg";
InputStream in = null;
byte[] data = null;
try {
in = new FileInputStream(imgFile);
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(data);
}
}
注意:private Configuration configuration = new Configuration(); 过时解决办法
Configuration configuration = new Configuration(Configuration.VERSION_2_3_23);