POI读取word模板 修改并生成新word

首先来看docx版也就是2007版word

第一先遍历下文本内容

function docxWord(inputUrl) {
        try {
                // inputUrl为读取word模板路径   
            const url = Packages.org.apache.poi.POIXMLDocument.openPackage(inputUrl)
            const doc = new Packages.org.apache.poi.xwpf.usermodel.XWPFDocument(url)

            //整个文本
            let allText = doc.getParagraphs();
            //
            //获取参数data属性
            //替换文档

            for (var i = 0; i < allText.size(); i++) {
                let paragraph = allText.get(i)
                let runs = paragraph.getRuns();
                for (var g = 0; g < runs.size(); g++) {
                    let run = runs.get(g);
                    let runstr = run.toString();
                        //0待变从第一位开始替换
                        run.setText("替换的内容", 0);

                    }
                }
            }

            //表格
            let allTable = doc.getTables();
             for (var i = 0; i < childTable.size(); i++) {
            let xwpfTbale = childTable.get(i)
            let rows = xwpfTbale.getRows();
            for (var g = 0; g < rows.size(); g++) {
                let xwpfTableRow = rows.get(g);
                let cells = xwpfTableRow.getTableCells();

                for (var q = 0; q < cells.size(); q++) {
                    let xwpfTableCell = cells.get(q);
                       //如果表格中还有表格需要有递归
                       //xwpfTableCell.getTbales 是获取当前子表格
                       
                    //结束
                    let paragraphs = xwpfTableCell.getParagraphs();

                    for (var w = 0; w < paragraphs.size(); w++) {
                        let xwpfParagraph = paragraphs.get(w);

                        let runs = xwpfParagraph.getRuns();
                        for (var r = 0; r < runs.size(); r++) {
                            let run = runs.get(r);

                            let runstr = run.toString()
                            let reg = /\$\{(.+?)\}/g

                             
                                run.setText("替换的内容", 0);
                            }
                        }
                    }
                }
                // }
            }

        }

            let stream = new Packages.java.io.FileOutputStream(outinput)
            doc.write(stream);
            stream.close()
        } catch{

        }
    }

再来看看doc版 2003版(简单的很)


        
        try {
            let fis = new Packages.java.io.FileInputStream(inputfill);
            let doc = new Packages.org.apache.poi.hwpf.HWPFDocument(fis);
            let out = new Packages.java.io.FileOutputStream(outinputfill);

            let rang = doc.getRange();
             //text是整个文档 
            let text = doc.getDocumentText();
           
              
            rang.replaceText("要替换的内容","替换的内容");
            //例如一个文档
           //  快把我换了 快把我换了
           //rang.replaceText("我","你")
           //  就变成了 快把你换了 快把你换了
           //表格中的文字也可以替换
               
              
          
            doc.write(out);
            out.close();
            // fis.close();
        } catch{

        }

好了到此结束 

点个赞谢谢

猜你喜欢

转载自blog.csdn.net/document_ljt/article/details/82800644