java 生成Word文档

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文档编码 - 完成。

结果图:

 

 

 

转载于:https://www.cnblogs.com/bailuobo/p/4754800.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值