精华内容
下载资源
问答
  • Word文档批量替换工具

    千次阅读 2019-07-01 11:25:01
    作者:iamlaosong 日常工作中可能会碰到...本工具可以实现一键完成批量替换,只需按键前将要替换的内容输入表格当中。工具用VBA实现,主要是针对ISO认证标准化文档做的,即对多个文件做同样的替换。界面如下: ...

    作者:iamlaosong

    日常工作中可能会碰到这样的情况,就是需要批量替换一些文件的内容,如合同、产品说明、ISO认证标准化文档(质量手册、程序文件、管理手册)、项目推广方案等,先做批量替换,再进行修改,可以节省大量时间。

    本工具可以实现一键完成批量替换,只需按键前将要替换的内容输入表格当中。工具用VBA实现,主要是针对ISO认证标准化文档做的,即对多个文件做同样的替换。界面如下:

     

    功能简单,实现起来也容易。也就是读取表格内容到数组,选择要替换的文件,然后逐个替换即可。

    1、文件夹替换:点击按钮选择一个文件夹,工具对文件夹下所有Word文档进行替换,替换后的文件保留在当前文件夹下新建的new文件夹下,文件名和源文件相同。

    2、文件替换:点击按钮后选择一个或多个Word文档,工具对对选中的文档进行替换,替换后的文件保留在当前文件夹下新建的new文件夹下,文件名和源文件相同。

    本来想用Excel VBA做的(毕竟这个我比较熟),可是Excel VBA代码写完后,打开Word文档没问题,其他代码执行没问题,就是替换功能那部分代码执行了完不成替换,而同样的代码在Word VBA中却可以实现所需的功能,不知道问题出在哪儿。

    核心代码如下:

    1、读取表格内容:

        '读取替换内容
        For k = 2 To 100
           tmp = ActiveDocument.Tables(1).Cell(k, 1)
           sFind(k) = Left(tmp, Len(tmp) - 2)
           tmp = ActiveDocument.Tables(1).Cell(k, 2)
           sRepl(k) = Left(tmp, Len(tmp) - 2)
           If sFind(k) = "" Then Exit For
        Next k
        WordNo = k - 1
    

    2、批量替换

        If Dir(sPath & "\new", vbDirectory) = "" Then MkDir sPath & "\new"
        '开始替换
        For kk = 1 To FileNo
            Target = sPath & "\" & myFile(kk)
            Debug.Print Target
            Documents.Open Target
                
            For k = 2 To WordNo
                Selection.Find.ClearFormatting
                Selection.Find.Replacement.ClearFormatting
                With Selection.Find
                    .Text = sFind(k)
                    .Replacement.Text = sRepl(k)
                    .Forward = True
                    .Wrap = wdFindContinue
                    .Format = False
                    .MatchCase = False
                    .MatchWholeWord = False
                    .MatchByte = True
                    .MatchWildcards = False
                    .MatchSoundsLike = False
                    .MatchAllWordForms = False
                    '执行替换
                    .Execute Replace:=wdReplaceAll
                End With
            Next k
            ActiveDocument.SaveAs2 FileName:=sPath & "\new\" & myFile(kk)
            'ActiveDocument.Save
            ActiveDocument.Close
        Next kk
        
        MsgBox "共有" & FileNo & "个文件替换完毕!"
    

     

    感兴趣朋友可以下载试试:Word文档批量替换工具.doc

    补记:

    后来发现,Excel之所以不行,是因为Excel环境下wdReplaceAll、wdFindContinue都是空值。而这些参数为空值,是因为我们没有引用Word对象,引用一下就不是空值了(如果把wdReplaceAll、wdFindContinue等常量换成其值2、1,不引用也可以),如下图:

    Excel下面的关键代码如下:

            '查找并替换
            For k = 1 To Strno
                With docApp.Selection.Find
                    .ClearFormatting
                    .Text = arrStr(k, 1)
                    .Replacement.Text = arrStr(k, 2)
                    .Forward = True
                    .Wrap = wdFindContinue
                    .MatchWildcards = False
                End With
                docApp.Selection.Find.Execute Replace:=wdReplaceAll
            Next k
    

    注意:docApp是Word应用对象,即:Set docApp = CreateObject("Word.Application")

     

    展开全文
  • 特别适合一些格式化文件,比如合同、产品说明、ISO标准化文档(质量手册、程序文件、管理手册)、项目推广方案等,先做批量替换,再进行修改,可以节省大量时间。需要看代码的可以输入工程密码,密码是我的用户名。
  • 本文讨论一下如果使用python来批量替换word中的内容。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧一、目标:在word文档中,将水果的名称由中文替换为英文。而且我们有多份word文档。二、实现:...

    本文讨论一下如果使用python来批量替换word中的内容。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    一、目标:

    在word文档中,将水果的名称由中文替换为英文。

    而且我们有多份word文档。

    20200306123338505.jpg

    20200306123345189.jpg

    二、实现:

    使用了python-docx 这个库。

    1、安装

    使用pip 安装很方便

    pip install python-docx

    特别注意:python-docx这个库只能用来处理docx文件,不能进行doc文件的处理。

    如果在Windows环境下, 可以使用 win32com模块,来批量把doc 文件转换为docx。

    延伸一点:

    doc文件与docx文件有什么不同呢?

    存储方式的不同: doc 是二进制存储,docx是打包文件(docx文件可以解压,能看到里面的文件结构,主要是xml 等组成的打包文件);

    docx易于跨平台,docx更小;

    docx对于处理一些复杂对象比如公式、表格、图片更得心应手,因为可以通过xml的配置进行。

    2、要使用的 python-docx 的基本用法

    import docx

    # 创建文档对象,获得word文档

    doc = docx.Document(path)

    #每一段的内容

    for para in doc.paragraphs:

    print(para.text)

    #每一段的编号、内容

    for i in range(len(doc.paragraphs)):

    print(str(i), doc.paragraphs[i].text)

    3、简单的替换函数

    # 将想要替换的内容写成字典的形式,

    # dict = {"想要被替换的字符串": "新的字符串"}

    replace_dict = {

    "苹果":"apple",

    "香蕉":"banana",

    "猕猴桃":"Kiwi fruit",

    "火龙果":"pitaya",

    }

    函数如下:

    def check_and_change(document, replace_dict):

    """遍历word中的所有 paragraphs,在每一段中发现含有key 的内容,就替换为 value 。(key 和 value 都是replace_dict中的键值对。)"""

    for para in document.paragraphs:

    for i in range(len(para.runs)):

    for key, value in replace_dict.items():

    if key in para.runs[i].text:

    print(key+"->"+value)

    para.runs[i].text = para.runs[i].text.replace(key, value)

    return document

    4、 一个完整的例子

    环境:python ==3.7.4 , python-docx== 0.8.10

    # coding=utf-8

    import os

    from docx import Document

    # 放了一些docx 文件

    old_file_path = "/Users/xxx/yyy/docx/"

    # 生成新文件后的存放地址

    new_file_path = "/Users/xxx/yyy/new_docx/"

    replace_dict = {

    "苹果": "apple",

    "香蕉": "banana",

    "猕猴桃": "Kiwi fruit",

    "火龙果": "pitaya",

    }

    def check_and_change(document, replace_dict):

    """遍历word中的所有 paragraphs,在每一段中发现含有key 的内容,就替换为 value 。(key 和 value 都是replace_dict中的键值对。)"""

    for para in document.paragraphs:

    for i in range(len(para.runs)):

    for key, value in replace_dict.items():

    if key in para.runs[i].text:

    print(key+"-->"+value)

    para.runs[i].text = para.runs[i].text.replace(key, value)

    return document

    def main():

    for name in os.listdir(old_file_path):

    print(name)

    old_file = old_file_path + name

    new_file = new_file_path + name

    if old_file.split(".")[1] == 'docx':

    document = Document(old_file)

    document = check_and_change(document, replace_dict)

    document.save(new_file)

    print("^"*30)

    if __name__ == '__main__':

    main()

    三、运行结果

    20200306123514511.jpg

    每一份word中,相应的内容替换成功。

    20200306123554465.jpg

    展开全文
  • 批量替换excel文字

    2018-08-11 11:51:39
    此工具可以用于批量替换excel表格中指定的文字,此工具可以用于批量替换excel表格中指定的文字
  • 可以轻松地将某文件夹下的所有WORD文档中的某个字符串全部替换为其他字符串。下面是具体操作步骤。
  • 比如我有一个需求,需要把一份 word 中的英文国家名全部替换成中文国家名,excel中的第一列是英文国家名,第二列是中文国家名。人工完成的话,费时费力,使用我编写的程序,双击一下,瞬间完成。 效果图 处理前 ...

    简介

    比如我有一个需求,需要把一份 word 中的英文国家名全部替换成中文国家名,excel中的第一列是英文国家名,第二列是中文国家名。人工完成的话,费时费力,使用我编写的程序,双击一下,瞬间完成。

    效果图

    处理前

    在这里插入图片描述

    处理后

    处理后

    源码

    Const wdReplaceAll = 2
    Dim arrSheet()
    Dim nUsedRows, nUsedCols
    Dim wordPath, exelPath
     
     '将下面这一行代码的双引号中的内容替换成你的word文档地址
    wordPath = ("D:\Tecent\QQFile\123.docx")
     '将下面这一行代码的双引号中的内容替换成你的excel文档地址
    exelPath = ("D:\Tecent\QQFile\123.xlsx")
    
    Set objWord = CreateObject("Word.Application")
    objWord.Visible = True
    Set objDoc = objWord.Documents.Open(wordPath)
    Set objSelection = objWord.Selection
    
    objSelection.Find.Forward = TRUE
    objSelection.Find.MatchWholeWord = TRUE
    
    ReadExcelFile(exelPath)
    
    for i=0 to nUsedRows-1
       objSelection.Find.Text = arrSheet(i,0)
       objSelection.Find.Replacement.Text = arrSheet(i,1)
       objSelection.Find.Execute ,,,,,,,,,,wdReplaceAll
    next
    
    Function ReadExcelFile(ByVal strFile)
    
      ' Local variable declarations
      Dim objExcel, objSheet, objCells
      Dim nTop, nLeft, nRow, nCol
    
      ' Default return value
      ReadExcelFile = Null
    
      ' Create the Excel object
      On Error Resume Next
      Set objExcel = CreateObject("Excel.Application")
      If (Err.Number <> 0) Then
        Exit Function
      End If
    
      ' Don't display any alert messages
      objExcel.DisplayAlerts = 0  
    
      ' Open the document as read-only
      On Error Resume Next
      Call objExcel.Workbooks.Open(strFile, False, True)
      If (Err.Number <> 0) Then
        Exit Function
      End If
    
      ' If you wanted to read all sheets, you could call
      ' objExcel.Worksheets.Count to get the number of sheets
      ' and the loop through each one. But in this example, we
      ' will just read the first sheet.
      Set objSheet = objExcel.ActiveWorkbook.Worksheets(1)
    
      ' Get the number of used rows
      nUsedRows = objSheet.UsedRange.Rows.Count
    
      ' Get the number of used columns
      nUsedCols = objSheet.UsedRange.Columns.Count
    
      ' Get the topmost row that has data
      nTop = objSheet.UsedRange.Row
    
      ' Get leftmost column that has data
      nLeft = objSheet.UsedRange.Column
    
      ' Get the used cells
      Set objCells = objSheet.Cells
    
      ' Dimension the sheet array
      ReDim arrSheet(nUsedRows - 1, nUsedCols - 1)
    
      ' Loop through each row
      For nRow = 0 To (nUsedRows - 1)
        ' Loop through each column
        For nCol = 0 To (nUsedCols - 1)
      ' Add the cell value to the sheet array
      arrSheet(nRow, nCol) = objCells(nRow + nTop, nCol + nLeft).Value
        Next
      Next
    
      ' Close the workbook without saving
      Call objExcel.ActiveWorkbook.Close(False)
    
      ' Quit Excel
      objExcel.Application.Quit
    
      ' Return the sheet data to the caller
      ReadExcelFile = arrSheet
    
    End Function
    

    使用说明

    1. excel 表格的 A 列是待替换内容,B 列是替换后的内容
    2. 新建txt文档,复制粘贴源码,将代码中第7行的 wordPath 的值修改为你的word文档的路径地址。将代码中第9行的 exelPath 的值修改为你的 excel 文档的路径地址。
    3. 修改文档后缀为VBS,点确认。修改完成后,你将得到一个xxx.VBS的可执行程序,双击即可完成替换操作。
    4. 后续有什么问题,可在评论区留言。我看到后会尽快回复。

    参考资料

    《How Can I Replace Text in a Microsoft Word Document?》
    https://blogs.technet.microsoft.com/heyscriptingguy/2006/08/08/how-can-i-replace-text-in-a-microsoft-word-document/
    《Reading Excel Files》
    https://developer.rhino3d.com/guides/rhinoscript/reading-excel-files/

    展开全文
  • 整个功能实现最重要的模块是docx这个模块安装语句pip install python-docxdocx模块只能操作.docx文件,所以在这之前我们要将.doc文件转换成.docx。.doc文件是不能直接转换成.docx文件的,如果直接改后缀名会引起文件...

    整个功能实现最重要的模块是docx这个模块

    安装语句

    pip install python-docx

    docx模块只能操作.docx文件,所以在这之前我们要将.doc文件转换成.docx。.doc文件是不能直接转换成.docx文件的,如果直接改后缀名会引起文件打不开或者乱码问题。

    所以我们需要将文件另存为.docx格式。

    import sys

    import pickle

    import re

    import codecs

    import string

    import shutil

    from win32com import client as wc

    import docx

    import os

    path = "C:\\Users"#需修改文件所在文件夹

    files = []#需修改文件列表

    #读取文件夹中文件列表

    for file1 in os.listdir(path):

    if file1.endswith(".doc"):

    files.append(file1)

    def doSaveAas(files):

    word = wc.Dispatch('Word.Application')

    for docname in files:

    temp='C:\\Users\\{}'.format(docname)

    doc = word.Documents.Open(temp) # 目标路径下的文件

    new_world = docname + "x"

    doc.SaveAs(u'C:\\Users\\{}'.format(new_world), 12, False, "", True, "", False, False, False, False) # 转化后路径下的文件

    doc.Close()

    word.Quit()

    doSaveAas(files)

    转化为docx文件后我们要来实现将指定目标替换的功能了,我需要实现的功能是将文件表格里的日期进行替换

    import os

    import docx

    #读取需要操作的文件的列表

    path = "C:\\Users"

    files = []#生成的文件队列

    for file1 in os.listdir(path):

    if file1.endswith(".docx"):

    files.append(path+"\\"+file1)

    #替换词

    def exchange(docname,old_word,new_word):#old_word是将要被替换的词,new_word是替换词

    for table in doc.tables:

    for row in table.rows:

    for cell in row.cells:

    cell.text = cell.text.replace(old_word,new_word)

    for file2 in files:

    doc = docx.Document(file2)

    exchange(file2,"old_word","new_word")

    doc.save(file2)

    print("{}替换完成".format(file2))

    这段代码仅能替换docx文件表格里的内容,不能替换正文内容

    展开全文
  • '''此函数用于批量替换合同中需要替换的信息 doc:文件 old_info和new_info:原文字和需要替换的新文字 ''' #读取段落中的所有run,找到需替换的信息进行替换 for para in doc.paragraphs: # for...
  • word 批量表格增加题注

    千次阅读 2019-12-26 12:15:50
    1.选中一个表,增加题注(引用->插入题注) ... ... 4.插入题注为 “表1”,鼠标选中“1”,右键,“切换域代码”。此时显示为“表{SEQ ...替换,打开替换窗口。 7.输入查找内容(我的情况是本来每个表都有表名,但...
  • Python批量处理Excel文件信息替换Word模板原由和思路工具准备1. 前期处理1.1 数据处理1.2 模板处理2. 编写代码2.1 使用Pycharm新建项目ExcelToWord2.2 新建ETW.py主程序文件并安装相应库2.3 主要代码块解析3. 打包...
  • 批量替换word/excel文件的内容(c#)

    热门讨论 2010-03-17 17:29:48
    实现批量替换word/excel文件的内容。 ·可以对多个词条进行一次性替换。 ·对加密、已打开的、只读文档跳过处理。 ·替换后黄底红字显示。 ·支持大小写匹配。 ·导入/导出替换配置文件。 ·日志记录替换情况,多看...
  • from docx import ...#定义一个方法用来替换 def change_test(old_test,new_test): #替换所有的段落 all_paragraphs = document.paragraphs for paragraph in all_paragraphs: for run in paragraph.runs: ...
  • 工作中经常遇到对word批量操作,如果重复的操作达到上百甚至更多后,也是不小的工作量,在此可以使用word的宏来自动执行重复的操作,提高办公效率,特写文档举列说明具体使用
  • 替换文档关键词 def replace_word(self, doc, before_words, after_words): '''此函数用于批量替换合同中需要替换的信息 doc:文件 old_info和new_info:原文字和需要替换的新文字 ''' # 读取段落中的所有run,找到需...
  • 群里(Word学习交流群:180627193)一位朋友问到,如何一次性批量替换多个word文档中的同一内容。其实,实现多个Word文档的字符进行批量替换的方法有多种。(www.itblw.com)  第一种方法,可以利用第三方软件:...
  • 编按:排版长文档时,许多人对于文档的格式设置非常头痛,时常为此加班熬夜,今天小编将给大家分享3个快速设置文档格式的Word排版技巧,超级实用,快来瞧一瞧你是不是都已经知道了呢?*********提起Word长...
  • 搜索文档中是否包含指定词汇,批量替换 暂只支持docx文本替换,若文档中包含表格图片等信息会自动跳过 添加支持表格功能,并可读取csv文件形成关键字
  • 本工具软件支持Word,txt,xls,ppt,asp,htm等6种类型的文档,对该类文档内容中的字符进行批量替换操作,支持一次性查找替换多对查找替换对,支持导入导出查找替换对列表。支持查找替换电子表格中文本框中的数据。支持...
  • word高级查找替换应用

    2019-06-01 04:03:37
    word高级查找替换应用 ** 实例1:在一篇长文档中,如果要在很多地方添加同一个公式或图片。 首先在需要输入公式的地方输入“gongshi”。再在另一文档中输入该公式并选中,“ctrl+C”一下,在替换为框输入:^c。 ...
  • 本篇文章由泉州SEOwww.234yp.com 整理发布,office办公软件学习www.234yp.com/Article/155228.html谢谢合作!office办公软件学习 ...下面要分享的就是wps表格批量修改内容的方法。  方法步骤  1、首先打开E...
  • 假期最后一天,明天就要上班了,今天给大家分享20个Word实用技巧,希望你们能够喜欢。01、一键选择同样的内容编辑Word时,如果需要将相同样式的内容全选复制出去该怎么办...02、表格文字自适应我们在Word里面插入表...
  • 在使用word时,我们也许都遇到过一种特殊的查找替换的烦恼,就是想将一些文字批量替换成图片的情况。那么这个是不是就没法完成呢?非也。Word的查找替换功能其实很强大,除了实体替换外,还可以用正则表达式输入。...
  • Python初学尝试:word批量刷格式转PDF,替换页眉页脚

    千次阅读 多人点赞 2020-02-27 15:41:19
    Python初学尝试:word批量刷格式转PDF,替换页眉页脚初学尝试round 1ronund 2 easyguiround 4 PyQt5如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左...
  • 解决问题 ...批量去除表格内的英文字母 解决方法 1、第一步,先将要去除字母的那一列复制到word文档,然后替换命令,输入^$ 2、第二步,点击全部替换,然后再复制到原来表格中即可! 大功告成!...
  • 例如:将一大批的网址整理成json的格式,或者将很多的word文档中表格数据整理成为json数据,或者python中的dict类型,以前只是傻乎乎的粘贴复制,有时候也就是将已存在的字符批量替换一下,最近对正则表达式有了简单...
  • 3、找到word文档中邮件–使用现有列表–导入你第一步准备的表格。 4、找到插入合并域,分别把姓名和时间替换到海报中的内容。 替换完毕之后是《姓名》《时间》表示出来的。 5、最后一步,选择邮件中–完成并合并...
  • 实例43:相连的英文单词、中文批量替换为英文单词、中文各一列的表格 29 实例44:处理西文、中文和标点 29 实例45:电话号码升位 31 实例46:手机号隐藏 31 实例47:移形换位 31 实例48:替换这样的名字 32 实例49:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,860
精华内容 744
关键字:

word表格批量替换表格文字