• java 读写word java 动态写入 模板文件


    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    
    import org.apache.poi.hwpf.HWPFDocument;
    import org.apache.poi.hwpf.model.FieldsDocumentPart;
    import org.apache.poi.hwpf.usermodel.Field;
    import org.apache.poi.hwpf.usermodel.Fields;
    import org.apache.poi.hwpf.usermodel.Paragraph;
    import org.apache.poi.hwpf.usermodel.Range;
    import org.apache.poi.hwpf.usermodel.Table;
    import org.apache.poi.hwpf.usermodel.TableCell;
    import org.apache.poi.hwpf.usermodel.TableIterator;
    import org.apache.poi.hwpf.usermodel.TableRow;
    
    
    /**
     * @author zhangchaochao
     * @date 2015-12-4上午10:30:59
     */
    public class MSWordPoi4  
    {  
          
        /** 
        * @param args 
        */  
        public static void main(String[] args)  
        {  
            Map<String, String> map = new HashMap<String, String>();  
            map.put("${sub}", "湖南大学");  
            map.put("${item2.school}", "湖南大学");  
            map.put("${item2.address}", "湖南");  
    //        map.put("${item1.name}", "王五1");  
    //        map.put("${item1.numberStudent}", "编号002");  
    //        map.put("${item1.sex}", "男2");  
    //        map.put("${item1.age}", "19");  
            String srcPath = "D:\铸造工艺卡.doc";  
            readwriteWord(srcPath, map);  
        }  
          
        /** 
        * 实现对word读取和修改操作 
        *  
        * @param filePath 
        *            word模板路径和名称 
        * @param map 
        *            待填充的数据,从数据库读取 
        */  
        public static void readwriteWord(String filePath, Map<String, String> map)  
        {  
            // 读取word模板  
            // String fileDir = new  
            // File(base.getFile(),"http://www.cnblogs.com/http://www.cnblogs.com/../doc/").getCanonicalPath();  
            FileInputStream in = null;  
            try  
            {  
                in = new FileInputStream(new File(filePath));  
            }  
            catch (FileNotFoundException e1)  
            {  
                e1.printStackTrace();  
            }  
            HWPFDocument hdt = null;  
            try  
            {  
                hdt = new HWPFDocument(in);  
            }  
            catch (IOException e1)  
            {  
                e1.printStackTrace();  
            }  
            Fields fields = hdt.getFields();  
            Iterator<Field> it = fields.getFields(FieldsDocumentPart.MAIN)  
                    .iterator();  
            while (it.hasNext())  
            {  
                System.out.println(it.next().getType());  
            }  
              
            //读取word文本内容  
            Range range = hdt.getRange();  
            TableIterator tableIt = new TableIterator(range);   
            //迭代文档中的表格  
            int ii = 0;  
            while (tableIt.hasNext()) {    
                Table tb = (Table) tableIt.next();    
                ii++;  
                System.out.println(""+ii+"个表格数据...................");  
                //迭代行,默认从0开始  
                for (int i = 0; i < tb.numRows(); i++) {    
                    TableRow tr = tb.getRow(i);    
                    //只读前8行,标题部分  
                    if(i >=8) break;  
                    //迭代列,默认从0开始  
                    for (int j = 0; j < tr.numCells(); j++) {    
                        TableCell td = tr.getCell(j);//取得单元格  
                        //取得单元格的内容  
                        for(int k=0;k<td.numParagraphs();k++){    
                            Paragraph para =td.getParagraph(k);    
                            String s = para.text();    
                            System.out.println(s);  
                        } //end for     
                    }   //end for  
                }   //end for  
            } //end while  
            //System.out.println(range.text());  
              
            // 替换文本内容  
            for (Map.Entry<String, String> entry : map.entrySet())  
            {  
                range.replaceText(entry.getKey(), entry.getValue());  
            }  
            ByteArrayOutputStream ostream = new ByteArrayOutputStream();  
            String fileName = "" + System.currentTimeMillis();  
            fileName += ".doc";  
            FileOutputStream out = null;  
            try  
            {  
                out = new FileOutputStream("D:/" + fileName, true);  
            }  
            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();  
            }  
        }  
    } 

    java 读写word java 动态写入 模板文件下载地址 

  • 相关阅读:
    isEmpty和isBlank区别
    java加密算法相关
    页面跳转、替换、刷新
    打开一个网站都经过了什么
    css3动画和JS+DOM动画和JS+canvas动画比较
    canvas如何兼容IE8
    移动端的300毫秒延迟问题
    几道前端的面试题
    js执行过程
    微信查看网页源代码的方法
  • 原文地址:https://www.cnblogs.com/tianyuxinchuan/p/5019433.html
Copyright © 2020-2023  润新知