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文档中的指定内容