java用freemarker实现导出word----包含图片
分为以下三个步骤:
1.先制作word模板
2.将该文档另存为 xml 文件
3.打开xml 文件
将对应的字段替换,比如
4.将xml文件保存成ftl格式的文档
5.相应的代码:
1 package org.lq.ssm.gp.controller; 2 3 import java.io.BufferedWriter; 4 import java.io.File; 5 import java.io.FileInputStream; 6 import java.io.FileNotFoundException; 7 import java.io.FileOutputStream; 8 import java.io.IOException; 9 import java.io.InputStream; 10 import java.io.OutputStreamWriter; 11 import java.io.Writer; 12 import java.util.ArrayList; 13 import java.util.HashMap; 14 import java.util.List; 15 import java.util.Map; 16 17 import sun.misc.BASE64Encoder; 18 19 import freemarker.template.Configuration; 20 import freemarker.template.Template; 21 import freemarker.template.TemplateException; 22 23 public class wordController { 24 25 private Configuration configuration = null; 26 27 public wordController(){ 28 configuration = new Configuration(); 29 configuration.setDefaultEncoding("UTF-8"); 30 } 31 32 public static void main(String[] args) { 33 wordController test = new wordController(); 34 test.createWord(); 35 } 36 37 public void createWord(){ 38 Map<String,Object> dataMap=new HashMap<String,Object>(); 39 getData(dataMap); 40 41 System.out.println(this.getClass().getResource("/util")); 42 configuration.setClassForTemplateLoading(this.getClass(), "/controller"); //FTL文件所存在的位置 43 Template t=null; 44 try { 45 46 t = configuration.getTemplate("baodan2.ftl"); //文件名 47 } catch (IOException e) { 48 e.printStackTrace(); 49 } 50 File outFile = new File("H:/baodan/baodan.doc"); 51 Writer out = null; 52 try { 53 out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile))); 54 } catch (FileNotFoundException e1) { 55 e1.printStackTrace(); 56 } 57 58 try { 59 t.process(dataMap, out); 60 } catch (TemplateException e) { 61 e.printStackTrace(); 62 } catch (IOException e) { 63 e.printStackTrace(); 64 } 65 } 66 67 private void getData(Map<String, Object> dataMap) { 68 69 List<Map<String,Object>> list = new ArrayList<Map<String,Object>>(); 70 dataMap.put("name", ""); 71 dataMap.put("username", ""); 72 dataMap.put("userzjh", ""); 73 dataMap.put("userQygs", ""); 74 dataMap.put("image", getImageStr()); 75 76 } 77 private String getImageStr() { 78 String imgFile = "H:\\JT1.jpg"; 79 80 InputStream in = null; 81 byte[] data = null; 82 try { 83 in = new FileInputStream(imgFile); 84 data = new byte[in.available()]; 85 in.read(data); 86 in.close(); 87 } catch (IOException e) { 88 e.printStackTrace(); 89 } 90 BASE64Encoder encoder = new BASE64Encoder(); 91 return encoder.encode(data); 92 } 93 94 }