已有184人关注
模仿书中的代码,word文档替换指定内容,运行正常无报错,但就是没有发生替换
发表在Python图书答疑 2020-04-12 悬赏:2 学分 《Python编程锦囊》第6章 Python与Office自动化 135页-136页
是否精华
版块置顶:

import win32com.client

app = win32com.client.Dispatch('Word.Application')

doc = app.Documents.Open("E:\\公告----------others\\模板.docx")

doc.Content.Find.Execute(FindText='【', ReplaceWith='[', Replace=2)

doc.Save()

doc.Close()

#模仿书中的代码,word文档替换指定内容,运行正常无报错,但就是没有发生替换。我用的是python3.8.1


#补充:也试了用本网站下载的书上的代码(P135-136),删除了一些用不上的语句,改写文件名和替换字符串。效果一样,运行正常无报错,但就是没有发生替换:


from win32com.client import Dispatch   # 导入win32com模块的client包下的函数

from win32com.client import constants  # 导入win32com模块的client包下的保存COM常量的类

from win32com.client import gencache   # 导入win32com模块的client包下的gencache()函数

import pythoncom                       # 导入封装了OLE自动化API的模块,该模块为win32com的子模块

import os                              # 导入系统功能模块


def replaceall(filename,strold,strnew):

    errmark = False  # 标记是否报错,False表示没有报错,True表示报错

    try:

        w = Dispatch("Word.Application") # 创建Word应用程序

        w.DisplayAlerts = 0 # 后台运行不显示、不警告

        try:

            doc = w.Documents.Open(filename)   # 打开Word文档

            doc.Content.Find.Execute(FindText= strold,ReplaceWith=strnew,Replace=2)

            print('--')

            doc.Save()   

            doc.Close(False)                       # 关闭文件

        except Exception as e:

            errmark = True                         # 标记是否出错的变量

            print(e)

        if not errmark:                                # 不出错时

            print("替换完毕!")

    except TypeError as e:

        print('出错了!')

        print(e)



if __name__ == '__main__':


    strold = "【" # 要替换的字符串

    strnew = "[" # 替换为的字符串

    filename = 'E:\\公告----------others\\模板.docx'  #文件路径和名称

    replaceall(filename,strold,strnew) # 替换Word文档中的指定内容


2020-04-12 15:59:03编辑
分享到:
精彩评论 2
无语_mrkj
学分:3155 LV11
2020-04-13
沙发

请问您是替换的页眉的内容?还是也包括正文中的内容?

另外,您直接运行一下书中的实例试试?

还有您使用的Word版本是什么?


随行_py
学分:6 LV1
2020-04-13
板凳
  1. 从我给的两个例子可以看出来,仅替换正文。我使用的word文件没有设页眉。

  2. 我给的第二个例子,基于等于书中实例,已说明下载了实例的源代码,删除页眉、文件夹名称等用不上的语句,文件名带了路径,替换的字符串,简化为测试一个字符。

  3. word2013版。在网上找了另一个语句,w.Selection.Find.Execute,w同书中。这个语句可以成功替换。

  4. doc.Content.Find.Execute, 这个语句,按理应该是可以用的,但不知什么原因导致的不替换。

  5. 你们可以运行一下我上面的两段代码?

首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照