JAVA生成Word文档:
注:引入freemarker-2.3.19.jar包
根据学长的方法整理出自己的逻辑 ,以下是自己的实践结果:
1、
注:以上图为Word模板 ,为了方便,填充的地方使用拼音。
2、将其Word模板另存为XML格式文件
3、打开xml文件,搜索title,将title更改为${title},其它地方一样修改,修改完成后将文件后缀名保存为ftl。
4、java代码
1 package word; 2 import java.io.BufferedWriter; 3 import java.io.File; 4 import java.io.FileNotFoundException; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.OutputStreamWriter; 8 import java.io.Writer; 9 import java.util.ArrayList; 10 import java.util.HashMap; 11 import java.util.List; 12 import java.util.Map; 13 14 import freemarker.template.Configuration; 15 import freemarker.template.Template; 16 import freemarker.template.TemplateException; 17 /** 18 * 19 * 20 * Description:java 生成Word文档 21 * 22 * @author liujianguang 23 * @version 1.0 24 * <pre> 25 * Modification History: 26 * Date Author Version Description 27 * ------------------------------------------------------------------ 28 * 2015年8月24日 liujianguang 1.0 1.0 Version 29 * </pre> 30 */ 31 public class javaGenerateWord { 32 33 private Configuration configuration = null; 34 35 public javaGenerateWord(){ 36 configuration = new Configuration(); 37 configuration.setDefaultEncoding("UTF-8"); 38 } 39 40 /** 41 * 42 * Description:创建Word 43 * 44 * @param 45 * @return void 46 * @throws 47 * @Author liujianguang 48 * Create Date: 2015年8月24日 下午1:48:42 49 */ 50 public void createWord(){ 51 Map<String,Object> dataMap=new HashMap<String,Object>(); 52 getData(dataMap); 53 configuration.setClassForTemplateLoading(this.getClass(), "/"); //FTL文件所存在的位置 54 Template t=null; 55 try { 56 t = configuration.getTemplate("wordTemplate.ftl"); //文件名 57 } catch (IOException e) { 58 e.printStackTrace(); 59 } 60 File outFile = new File("D:/outFilessa"+Math.random()*10000+".doc"); 61 Writer out = null; 62 try { 63 out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile))); 64 } catch (FileNotFoundException e1) { 65 e1.printStackTrace(); 66 } 67 68 try { 69 t.process(dataMap, out); 70 } catch (TemplateException e) { 71 e.printStackTrace(); 72 } catch (IOException e) { 73 e.printStackTrace(); 74 } 75 } 76 77 /** 78 * 79 * Description:创建数据 80 * 81 * @param 82 * @return void 83 * @throws 84 * @Author liujianguang 85 * Create Date: 2015年8月24日 下午2:03:55 86 */ 87 private void getData(Map<String, Object> dataMap) { 88 dataMap.put("title", "标题"); 89 dataMap.put("year", "2015"); 90 dataMap.put("month", "08"); 91 dataMap.put("day", "24"); 92 dataMap.put("xuhao", "001"); 93 dataMap.put("neirong", "生成WORD文档"); 94 dataMap.put("bianzhi", "001"); 95 dataMap.put("shenheren", "刘建广"); 96 dataMap.put("dianhua", "13011111111"); 97 98 // //以下List用于如何遍历数据 99 // List<Map<String,Object>> list = new ArrayList<Map<String,Object>>(); 100 // for (int i = 0; i < 3; i++) { 101 // Map<String,Object> map = new HashMap<String,Object>(); 102 // map.put("xuhao", i); 103 // map.put("neirong", "内容"+i); 104 // list.add(map); 105 // } 106 // 107 // dataMap.put("list", list); 108 } 109 110 public static void main(String[] args) { 111 javaGenerateWord test = new javaGenerateWord(); 112 test.createWord(); 113 } 114 }
以上是生成Word文档编码 - 完成。
结果图: