将模板word中的特定字段替换(将数据导入word中)

来源:互联网 发布:淘宝客服培训ppt下载 编辑:程序博客网 时间:2024/05/23 00:19

一、 将模板word中的特定字段替换(将数据导入word中)
所用jar包

依赖的jar包

一、  将模板word中的特定字段替换(将数据导入word中)所用jar包开发代码/**     * @Title createContract     * @description 生成合同文档     * @param tmp 模板文件     * @param dst 生成后的合同文件     * @param values 合同中需要替换的内容(不含第1个多行表格)     * @param list 第一个表格中需要替换的内容(格式与values相同)     */    public static void createContract(File tmp, File dst, Map<String,Object> values,             List<Map<String,Object>> list){             FileInputStream in = null;             try {                 in = new FileInputStream(tmp);             } catch (FileNotFoundException e1) {                 e1.printStackTrace();             }             HWPFDocument hdt = null;             try {                 hdt = new HWPFDocument(in);             } catch (IOException e1) {                 e1.printStackTrace();             }             Range range = hdt.getRange();           //替换第一个表格内容           TableIterator tableIt = new TableIterator(range);   //         if (tableIt.hasNext()) {    //             Table tb = (Table) tableIt.next();  //             int lines = list.size();//             if(!values.containsKey("inv_UsrCustId")){//                 for(int i=0; i<lines; i++){//                     TableRow tr = tb.getRow(i+2);//                     //                     //System.out.println(tr.text());//                     Map<String,String> kvs = list.get(i);//                     for (Map.Entry<String,String> entry: kvs.entrySet()) {//                         tr.replaceText("${" + entry.getKey() + "}",entry.getValue());//                     } //                 }//                 //删除多余行//                 int trCnt = tb.numRows();    //总行数//                 //                 while(trCnt>lines+2){//有2行表头//                     tb.getRow(trCnt-1).delete();//                     trCnt --;//                 }//             }//         }           //System.out.println(range.text());           //替换其他文本内容             String str = range.text();           Map<String,Object> map = new HashMap<String,Object>();           for (Map.Entry<String,Object> entry: values.entrySet()) {                 String key = entry.getKey();               int i = str.indexOf(key);               if(!(i == -1)){               map.put(key, values.get(key));               }           }            for(Map.Entry<String,Object> entry: map.entrySet()){               //System.out.println(entry.getKey() + ":"+entry.getValue());               range.replaceText("${" + entry.getKey() + "}", entry.getValue()+"");             }           System.out.println("------------------------------分割线------------------------");           System.out.println(range.text());           ByteArrayOutputStream ostream = new ByteArrayOutputStream();             FileOutputStream out = null;             try {                 out = new FileOutputStream(dst,false);             } catch (FileNotFoundException e) {                 e.printStackTrace();             }             try {                 hdt.write(ostream);             } catch (IOException e) {                 e.printStackTrace();             }             //输出字节流             try {                 out.write(ostream.toByteArray());             } catch (IOException e) {                 e.printStackTrace();             }             try {                 out.close();             } catch (IOException e) {                 e.printStackTrace();             }             try {                 ostream.close();             } catch (IOException e) {                 e.printStackTrace();             }         }  
阅读全文
0 0
原创粉丝点击