精华内容
下载资源
问答
  • 2019-07-16 11:28:38

    /// <summary>
            /// 查找替换文本
            /// </summary>
            /// <param name="filePath">文件路径</param>
            /// <param name="strOld">查找文本</param>
            /// <param name="strNew">替换文本</param>
             private void WordReplace(string filePath, string strOld, string strNew)
             {
                 //实例化对象
                 Microsoft.Office.Interop.Word._Application app = new Microsoft.Office.Interop.Word.ApplicationClass();//new Microsoft.Office.Interop.Word.ApplicationClass();

     

                 object nullobj = Type.Missing;

     

                 object file = filePath;

     

                 Microsoft.Office.Interop.Word._Document doc = app.Documents.Open(
                 ref file, ref nullobj, ref nullobj,
                 ref nullobj, ref nullobj, ref nullobj,
                 ref nullobj, ref nullobj, ref nullobj,
                 ref nullobj, ref nullobj, ref nullobj,
                 ref nullobj, ref nullobj, ref nullobj, ref nullobj) as Microsoft.Office.Interop.Word._Document;

     

                 app.Selection.Find.ClearFormatting();
                 app.Selection.Find.Replacement.ClearFormatting();
                 app.Selection.Find.Text = strOld;
                 app.Selection.Find.Replacement.Text = strNew;

     

                 object objReplace = Microsoft.Office.Interop.Word.WdReplace.wdReplaceAll;

     

                 app.Selection.Find.Execute(ref nullobj, ref nullobj, ref nullobj,
                                            ref nullobj, ref nullobj, ref nullobj,
                                            ref nullobj, ref nullobj, ref nullobj,
                                            ref nullobj, ref objReplace, ref nullobj,
                                            ref nullobj, ref nullobj, ref nullobj);

     


                 //清空Range对象
                 //Microsoft.Office.Interop.Word.Range range = null;

                 //保存
                 doc.Save();
                 doc.Close(ref nullobj, ref nullobj, ref nullobj);
                 app.Quit(ref nullobj, ref nullobj, ref nullobj);
             }

    更多相关内容
  • 主要介绍了Java Word 文档中使用新文本替换指定文本的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • java poi 替换word文本

    2018-01-16 16:04:08
    java poi 实现word文本替换,支持doc和docx格式的文本替换
  • 易语言WORD替换
  • java2Word操作Word,比如插入图片和替换文本,压缩文件中有【lib和exe】文件夹和[java2Word]项目代码,网上都不完整,本人对其进行完全整合,新手解压后按readme.txt文件操作说明可以使用
  • 主要介绍了Java 添加、删除、替换、格式化Word中的文本(基于Spire.Cloud.SDK for Java),本文分步骤通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
  • 全文替换模块 系统结构:全文本替换, ======窗口程序集1 | | | |------ __启动窗口_创建完毕 | | | |------ _按钮1_被单击 ======程序集1 | | | |------ _启动子程序 | | | |------ _临时子程序 | | | |------ 全
  • } else { // 最小粒度无法匹配,此处采用下下策粗粒度替换文本 String text = xwpfParagraph.getText(); XWPFRun xwpfRun = xwpfParagraph.getRuns().get(0); String fontFamily = xwpfRun.getFontFamily(); int ...

    不好用请移至评论区揍我
    原创代码,转载带出处,谢谢!

    pom.xml

    	<properties>
    	    <java.version>1.8</java.version>
    	    <poi.version>3.17</poi.version>
    	</properties>
    	
    	<dependency>
    	    <groupId>org.apache.poi</groupId>
    	    <artifactId>poi</artifactId>
    	    <version>${poi.version}</version>
    	</dependency>
    	<dependency>
    	    <groupId>org.apache.poi</groupId>
    	    <artifactId>poi-scratchpad</artifactId>
    	    <version>${poi.version}</version>
    	</dependency>
    	<dependency>
    	    <groupId>org.apache.poi</groupId>
    	    <artifactId>poi-ooxml</artifactId>
    	    <version>${poi.version}</version>
    	</dependency>
    

    WordUtils.java

    package com.hybase.file.util;
    
    import org.apache.commons.lang3.StringUtils;
    import org.apache.poi.POIXMLDocument;
    import org.apache.poi.xwpf.usermodel.*;
    
    import java.io.FileOutputStream;
    import java.util.*;
    
    /**
     * @author 954L
     * @create 2021/12/9 10:23
     */
    public class WordUtils {
    
        /**
         * 替换word内容
         * @param src 原word文件地址
         * @param dest 转换后word文件地址
         * @param params 替换参数map
         * @throws Exception
         */
        private static void convertWordByXwpf(String src, String dest, Map<String, String> params) throws Exception {
            XWPFDocument document = new XWPFDocument(POIXMLDocument.openPackage(src));
            // 基础内容替换
            List<XWPFParagraph> xwpfParagraphList = document.getParagraphs();
            for (int i = 0, size = xwpfParagraphList.size(); i < size; i++) {
                XWPFParagraph xwpfParagraph = xwpfParagraphList.get(i);
                for (String key: params.keySet()) {
                    if (xwpfParagraph.getText().contains(key))
                        replaceInParagraph(xwpfParagraph, key, params.get(key));
                }
            }
            // 表格内容替换
            Iterator<XWPFTable> tablesIterator = document.getTablesIterator();
            while (tablesIterator.hasNext()) {
                XWPFTable xwpfTable = tablesIterator.next();
                for (int i = 0, count = xwpfTable.getNumberOfRows(); i < count; i++) {
                    XWPFTableRow xwpfTableRow = xwpfTable.getRow(i);
                    List<XWPFTableCell> xwpfTableCellList = xwpfTableRow.getTableCells();
                    for (int j = 0, cellSize = xwpfTableCellList.size(); j < cellSize; j++) {
                        XWPFTableCell xwpfTableCell = xwpfTableCellList.get(j);
                        List<XWPFParagraph> paragraphList = xwpfTableCell.getParagraphs();
                        for (int k = 0, paragraphSize = paragraphList.size(); k < paragraphSize; k++) {
                            XWPFParagraph xwpfParagraph = paragraphList.get(k);
                            if (StringUtils.isBlank(xwpfParagraph.getText())) continue;
                            for (String key : params.keySet()) {
                                if (xwpfParagraph.getText().contains(key))
                                    replaceInParagraph(xwpfParagraph, key, params.get(key));
                            }
                        }
                    }
                }
            }
            try (FileOutputStream outStream = new FileOutputStream(dest)) {
                document.write(outStream);
            }
        }
    
        private static void replaceInParagraph(XWPFParagraph xwpfParagraph, String oldString, String newString) {
            List<XWPFRun> runs = xwpfParagraph.getRuns();
            int runSize = runs.size();
            StringBuilder textSb = new StringBuilder();
            Map<Integer, String> textMap = new HashMap<>();
            for (int j = 0; j < runSize; j++) {
                XWPFRun xwpfRun = runs.get(j);
                Integer textPosition = xwpfRun.getTextPosition();
                String text = xwpfRun.getText(textPosition);
                textSb.append(text);
                textMap.put(j, text);
            }
            // 判断是否重合
            if (!textSb.toString().contains(oldString)) return;
    
            int startIndex = 0;
            int mapSize = textMap.size();
            int maxEndIndex = oldString.length();
            Integer startPosition = null, endPosition = null;
            String uuid = UUID.randomUUID().toString();
            alwaysFor: for(;;) {
                if (startIndex > mapSize) break;
                int endIndex = startIndex;
                while (endIndex >= startIndex && maxEndIndex > endIndex - startIndex) {
                    StringBuilder strSb = new StringBuilder();
                    for (int i = startIndex; i <= endIndex; i++) strSb.append(
                            textMap.getOrDefault(i, uuid));
                    if (!strSb.toString().trim().equals(oldString)) ++endIndex;
                    else {
                        startPosition = startIndex;
                        endPosition = endIndex;
                        break alwaysFor;
                    }
                }
                ++startIndex;
            }
    
            if (startPosition != null && endPosition != null) {
                XWPFRun modelRun = runs.get(endPosition);
                XWPFRun xwpfRun = xwpfParagraph.insertNewRun(endPosition + 1);
                xwpfRun.setText(newString);
                if (modelRun.getFontSize() != -1) xwpfRun.setFontSize(modelRun.getFontSize());
                xwpfRun.setFontFamily(modelRun.getFontFamily());
                for (int i = endPosition; i >= startPosition; i--) xwpfParagraph.removeRun(i);
            } else {
                // 最小粒度无法匹配,此处采用下下策粗粒度替换文本
                String text = xwpfParagraph.getText();
                XWPFRun xwpfRun = xwpfParagraph.getRuns().get(0);
                String fontFamily = xwpfRun.getFontFamily();
                int fontSize = xwpfRun.getFontSize();
                XWPFRun insertXwpfRun = xwpfParagraph.insertNewRun(runSize);
                insertXwpfRun.setText(text.replace(oldString, newString));
                insertXwpfRun.setFontFamily(fontFamily);
                insertXwpfRun.setFontSize(fontSize);
                for (int i = runSize - 1; i >= 0; i--) xwpfParagraph.removeRun(i);
            }
        }
    
    }
    

    对你有帮助的话,点个赞呗~

    展开全文
  • /** * poi word工具类 */ public class POIWordUtil { /** * 替换内容 * * @param textMap 需要替换的信息集合 */ public static void replaceWord(XWPFDocument document, Map textMap) { //解析替换文本段落对象 ...

    1 Maven依赖

            <!--hutool工具包-->
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>5.5.1</version>
            </dependency>
    
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>easyexcel</artifactId>
                <version>2.2.7</version>
            </dependency>

    2 POIWordUtil

    POI Word工具类。

    package com.util;
    
    import java.util.List;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.Set;
    
    import cn.hutool.core.util.StrUtil;
    import org.apache.poi.xwpf.usermodel.XWPFDocument;
    import org.apache.poi.xwpf.usermodel.XWPFParagraph;
    import org.apache.poi.xwpf.usermodel.XWPFRun;
    import org.apache.poi.xwpf.usermodel.XWPFTable;
    import org.apache.poi.xwpf.usermodel.XWPFTableCell;
    import org.apache.poi.xwpf.usermodel.XWPFTableRow;
    
    /**
     * poi word工具类
     */
    public class POIWordUtil {
        /**
         * 替换内容
         *
         * @param textMap 需要替换的信息集合
         */
        public static void replaceWord(XWPFDocument document,
                                       Map<String, String> textMap) {
            //解析替换文本段落对象
            changeText(document, textMap);
            //解析替换表格对象
            changeTable(document, textMap);
    
        }
    
        /**
         * 替换段落文本
         *
         * @param document docx解析对象
         * @param textMap  需要替换的信息集合
         */
        public static void changeText(XWPFDocument document, Map<String, String> textMap) {
            //获取段落集合
            List<XWPFParagraph> paragraphs = document.getParagraphs();
            for (XWPFParagraph paragraph : paragraphs) {
                //判断此段落时候需要进行替换
                String text = paragraph.getText();
                if (StrUtil.isNotBlank(text) && text.contains("${")) {
                    List<XWPFRun> runs = paragraph.getRuns();
                    for (XWPFRun run : runs) {
                        //替换模板原来位置
                        String textValue = changeValue(run.toString(), textMap);
                        run.setText(textValue, 0);
                    }
                }
            }
        }
    
        /**
         * 替换表格对象方法
         *
         * @param document docx解析对象
         * @param textMap  需要替换的信息集合
         */
        public static void changeTable(XWPFDocument document, Map<String, String> textMap) {
            //获取表格对象集合
            List<XWPFTable> tables = document.getTables();
            for (int i = 0; i < tables.size(); i++) {
                //只处理行数大于等于2的表格,且不循环表头
                XWPFTable table = tables.get(i);
                if (table.getRows().size() > 1) {
                    //判断表格内容是否可以替换
                    String cellText = table.getText();
                    if (StrUtil.isNotBlank(cellText) && cellText.contains("${")){
                        List<XWPFTableRow> rows = table.getRows();
                        //遍历表格,并替换模板
                        eachTable(rows, textMap);
                    }
                }
            }
        }
    
        /**
         * 遍历表格
         *
         * @param rows    表格行对象
         * @param textMap 需要替换的信息集合
         */
        public static void eachTable(List<XWPFTableRow> rows, Map<String, String> textMap) {
            for (XWPFTableRow row : rows) {
                List<XWPFTableCell> cells = row.getTableCells();
                for (XWPFTableCell cell : cells) {
                    //判断单元格内容是否可以替换
                    String cellText = cell.getText();
                    if (StrUtil.isNotBlank(cellText) && cellText.contains("${")) {
                        List<XWPFParagraph> paragraphs = cell.getParagraphs();
                        for (XWPFParagraph paragraph : paragraphs) {
                            List<XWPFRun> runs = paragraph.getRuns();
                            for (XWPFRun run : runs) {
                                run.setText(changeValue(run.toString(), textMap), 0);
                            }
                        }
                    }
                }
            }
        }
    
        /**
         * 匹配传入信息集合与模板
         *
         * @param value   模板需要替换的区域
         * @param textMap 传入信息集合
         * @return 模板需要替换区域信息集合对应值
         */
        public static String changeValue(String value, Map<String, String> textMap) {
            Set<Entry<String, String>> textSets = textMap.entrySet();
            for (Entry<String, String> textSet : textSets) {
                //匹配模板与替换值 格式${key}
                String key = "${" + textSet.getKey() + "}";
                if (value.indexOf(key) != -1) {
                    value = value.replace(key, textSet.getValue());
                }
            }
            return value;
        }
    }

    3 调试代码

        /**
         * 替换内容
         *
         * @param response
         */
        @GetMapping("/replaceContent")
        public void replaceContent(HttpServletResponse response) {
            try {
                //读文件
                ClassPathResource cpr = new ClassPathResource("/doc/模板2.docx");
                XWPFDocument document = new XWPFDocument(cpr.getInputStream());
    
                //文本数据
                Map<String, String> contentMap = new HashMap<>();
                contentMap.put("xudongmaster", "旭东怪");
                contentMap.put("xudongmaster2", "旭东怪2");
                contentMap.put("xudongmaster3", "旭东怪3");
                contentMap.put("tablexudongmaster", "表格旭东怪");
                contentMap.put("tablexudongmaster2", "表格旭东怪2");
                contentMap.put("tablexudongmaster3", "表格旭东怪3");
                
                //替换内容
                POIWordUtil.replaceWord(document,contentMap);
    
                //返回流
                response.setHeader("content-type", "application/octet-stream");
                response.setContentType("application/octet-stream;charset=UTF-8");
                response.setHeader("Content-Disposition", "attachment; filename=" + new String("模板.docx".getBytes("utf-8"), "ISO-8859-1"));
                OutputStream outputStream = response.getOutputStream();
                document.write(outputStream);
                outputStream.flush();
                outputStream.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
    
        }

    4 模板文件

    模板目录:

    模板内容:

    5 调试结果

    注:

    出现内容没有替换成功的情况时,解决办法参考以下博客。

    POI XWPFParagraph.getRuns分段混乱问题解决

    展开全文
  • word文档内容批量替换工具(含delphi源码)
  • 之前工作中,需要实现Word打印功能,并且插入图片。当时采取的方式则是使用书签进行操作。首先在word内插入书签,完成后,存为模板。程序加载该模板,找到书签,并指定位置写入文字即可
  • 主要介绍了Java 替换word文档文字,指定位置插入图片功能,本文通过实例代码给大家讲解,需要的朋友可以参考下
  • 利用jacob实现替换word文本和图片,需要导入响应jar包和dll.
  • 1,可批量替换word中的指定内容 ,亲测,实用。 ps:目录的深度超过3级后,有时替换不了。
  • 软件介绍 一款asp在线文本批量替换工具,能自动识别文件编码类型,在线批量替换文本文件中的字符的asp原创程序. Tags: Wordreplace在线文本批量替换工具
  • 找了好久才调试成功,主要是导入图片设置图片尺寸比较麻烦,设置文字的demo比较多,但是很少有涉及到图片的demo ,好不容易找了一个分享一下
  • 代码调用word模板,替换模板中的文本,以及表格对象。
  • 之前工作中,需要实现Word打印功能,并且插入图片。当时采取的方式则是使用书签进行操作。首先在word内插入书签,完成后,存为模板。程序加载该模板,找到书签,并指定位置写入文字即可。 后期维护过程中,发现...
  • 用于在Word文档(DOCX文件格式)上执行查找和替换文本的纯.NET解决方案。
  • 以下将要介绍的内容,除常见的以文本替换文本外,还将介绍使用不同对象进行替换的方法,具体可包括:1. 指定字符串内容替换文本(通过方法replce(matchString, newValue, caseSensitive, wholeWord );直接指定替换的...

    Word中的替换功能以查找指定文本然后替换为新的文本,可单个替换或全部替换。以下将要介绍的内容,除常见的以文本替换文本外,还将介绍使用不同对象进行替换的方法,具体可包括:

    1. 指定字符串内容替换文本(通过方法replce(matchString, newValue, caseSensitive, wholeWord );直接指定替换的新字符串内容)

    2. 获取文档内容替换文本(通过方法replace(String matchString, TextSelection textSelection, boolean caseSensitive, boolean wholeWord);替换指定文本)

    3. 图片替换文本

    4. 图片替换图片

    使用工具及jar导入:

    需要使用 Free Spire.Doc for Java的jar包,可手动

    【示例1】指定字符串内容替换文本

    import com.spire.doc.*;public classReplaceTextWithText {public static voidmain(String[] args) {//加载文档

    Document doc = newDocument();

    doc.loadFromFile("test.docx");//要替换第一个出现的指定文本,只需在替换前调用setReplaceFirst方法来指定只替换第一个出现的指定文本//doc.setReplaceFirst(true);//调用方法用新文本替换原文本内容

    doc.replace("系统测试", "System Testing", false, true);//保存文档

    doc.saveToFile("ReplaceAllText.docx",FileFormat.Docx_2013);

    doc.dispose();

    }

    }

    9b1ee677d1599aadd650513a052ba981.png

    【示例2】获取文档内容替换文本

    import com.spire.doc.*;importcom.spire.doc.documents.TextSelection;public classReplaceTextWithDocument {public static voidmain(String[] args) {//加载文档1

    Document doc1 = newDocument();

    doc1.loadFromFile("test.docx");//加载文档2

    Document doc2 = newDocument();

    doc2.loadFromFile("TargetFile.docx");//查找文档2中的指定内容

    TextSelection textSelection = doc2.findString("Falling under the scope of black box testing, " +

    "system testing is a phase in the software " +

    "testing cycle where a total and integrated" +

    " application /system is tested.",false,false);//用文档2中查找到的内容替换文档1中的指定字符串

    doc1.replace("System Test, ST",textSelection,false,true);//保存文档1

    doc1.saveToFile("ReplaceTextWithDocument.docx",FileFormat.Docx_2013);

    doc1.dispose();

    }

    }

    两个用于测试的文档如下,将文档2中的文本内容替换文档1中的指定文本内容:

    9937549d5b6a2c9fa5cdeab42fb71e25.png

    替换结果:

    ecbb7ca14d98d191942f8cd7722c04c0.png

    【示例3】图片替换文本

    import com.spire.doc.*;importcom.spire.doc.documents.TextSelection;importcom.spire.doc.fields.DocPicture;importcom.spire.doc.fields.TextRange;public classReplaceTextWithImg {public static voidmain(String[] args) {//加载文档

    Document doc = new Document("test.docx");//查找需要替换的字符串

    TextSelection[] textSelection = doc.findAllString("系统测试",true,false);intindex ;//加载图片替换文本字符串

    for(Object obj : textSelection) {

    TextSelection Selection=(TextSelection)obj;

    DocPicture pic= newDocPicture(doc);

    pic.loadImage("tp.png");

    TextRange range=Selection.getAsOneRange();

    index=range.getOwnerParagraph().getChildObjects().indexOf(range);

    range.getOwnerParagraph().getChildObjects().insert(index,pic);

    range.getOwnerParagraph().getChildObjects().remove(range);

    }//保存文档

    doc.saveToFile("ReplaceTextWithImage.docx", FileFormat.Docx_2013);

    doc.dispose();

    }

    }

    11fc2061e5413cb7da3ed343e2f77fb7.png

    【示例4】图片替换图片

    import com.spire.doc.*;importcom.spire.doc.documents.Paragraph;importcom.spire.doc.fields.DocPicture;public classReplacePictureWithPicture {public static voidmain(String[] args) {//加载Word文档

    Document doc = newDocument();

    doc.loadFromFile("sample.docx");//获取文档中的指定段落

    Section section = doc.getSections().get(0);

    Paragraph para= section.getParagraphs().get(0);//替换段落中的第一张图片

    Object obj = para.getChildObjects().get(0);if(obj instanceofDocPicture){

    DocPicture pic=(DocPicture)obj;

    pic.loadImage("tp.png");

    }/*//批量替换图片

    for(int i =0;i < section.getParagraphs().getCount();i++){

    Object obj = section.getParagraphs().get(i).getChildObjects();

    if(obj instanceof DocPicture){

    DocPicture pic = (DocPicture)obj;

    pic.loadImage("tp.png");

    }

    }*/

    //保存结果文档

    doc.saveToFile("ReplaceWithImage.docx", FileFormat.Docx_2013);

    doc.dispose();

    }

    }

    2a204e74d138748c2ab2d364b37896bc.png

    (完)

    展开全文
  • 结果是内容显示页面上是五花八门的样式,有时也需要部分纯文本内容作为摘录使用,这些都需要清除word格式。改变客户的习惯要客户先复制到记事本里再粘贴到编辑器里编辑是很难的,所以从我们自己改变起。从网上百度...
  • C#替换Word中的文本内容

    千次阅读 2017-11-02 19:56:53
    替换word中的文字 Word文档文本替换时长度不能超过255个字符,不能一次性替换,本...另外,Word中的换行符是“^p”,如果替换文本中有换行符,需要循环替换时检查是否将该字符切割了,如果切割了,则少截取一个字符;
  • 用python实现word内容 excel内容 文件名 文件夹名字的查找与替换。可以以当前路径为基础深度优先搜索各级文件夹,进行内容和文件名字的查找与替换
  • 为您提供奈末Word批量替换助手下载,Word批量替换助手是奈末科技专为处理doc,docx文档批量替换而设计的软件,软件具有以下功能:doc,docx文档文字批量替换word页眉,页脚批量替换。基本简介 软件操作简单,绿色...
  • 再读取文档替换文本 var testTemp = new Document(); testTemp.LoadFromFile(testTempletPath); testTemp.Replace("{物料编码}", "123456", false, false); testTemp.SaveToFile(savePath, FileFormat.Docx); ...
  • VS2010下c#操作word进行批量查找和替换。选择路径后程序自动进行批量查找和替换,去持子目录搜索、大小写匹配、整字匹配、通配符匹配。
  • java使用poi在word模板中替换柱状图、折线图、饼图、表格、文本、图片

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 87,922
精华内容 35,168
关键字:

word替换文本在哪