背景需求:
【技术类-04】python实现docx表格文字和段落文字的“手动换行符(软回车)”变成“段落标记(硬回车)”-CSDN博客文章浏览阅读1k次,点赞10次,收藏10次。【技术类-04】python实现docx表格文字和段落文字的“手动换行符(软回车)”变成“段落标记(硬回车)”https://blog.csdn.net/reasonsummer/article/details/136763487?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22136763487%22%2C%22source%22%3A%22reasonsummer%22%7D
设计思路根据这位作者的利用Win32模块替换docx表格内文字加粗的方法,实现了段落文字加粗,不改变原格式。
Python:用【Win32】模块,结合Word通配符替换,将Word文档表格的部分内容替换为加粗_pywin32 word 查找加粗-CSDN博客文章浏览阅读600次。在Python中,如果需要对所有表格的某一部分进行修改,可以用【Win32】模块。文章主要说明如何结合Word通配符替换,将Word文档表格的冒号(含)之前的内容替换为加粗。_pywin32 word 查找加粗https://blog.csdn.net/qq_64613735/article/details/125552847素材准备:
所有的“中国人”加粗
'''
标题:测试docx段落文字中“中国人”加粗,不改变原来格式
作者:「VBA-守候」、阿夏:
时间:2024年3月19日 19:55
'''
from win32com.client.gencache import EnsureDispatch
from win32com.client import constants # 导入枚举常数模块
print('-----第2步:提取word路径-----')
path=r'C:\Users\jg2yXRZ\OneDrive\桌面\加粗\123.docx'
new=r'C:\Users\jg2yXRZ\OneDrive\桌面\加粗\234.docx'
print('------第3步:每一份word替换----')
#————————————————
# 版权声明:本文为CSDN博主「VBA-守候」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
# 原文链接:https://blog.csdn.net/qq_64613735/article/details/125552847
# 部分参数修改
wdApp = EnsureDispatch("Word.Application")
# aDoc = wdApp.ActiveDocument # aDoc为当前文件
# wdApp.Visible = False # 程序设置为不可见
aDoc = wdApp.Documents.Open(path) # 打开已经存在的文件
old_word='中国人'
new_word=old_word
i = 0
# 文档里有多个几个表格
for ta in aDoc.Paragraphs: # 遍历表格,如果无需遍历,直接将ta指定为某个表格即可,如这样指定为第一个表格:ta = aDoc.Tables(1)
# f为每个表格区域查找
f = ta.Range.Find
# 查找框参数
f.ClearFormatting() # 清除原有格式
f.Forward = True # 向前查找
f.Format = True # 查找格式
f.Wrap = constants.wdFindStop # 查找完成即停止
f.MatchWildcards = True # 使用通配符,根据需要设置
# f.Text = '[!^13^l::]{1,}[::]' # 查找的内容 冒号前面的 [!^13^l::] 1代表z只要替换一次,[::]代表冒号。冒号前面包括冒号需要改成加粗
# f.Text = '[{}]{2,}'.format(old_word) # 查找的内容 2代表2个字小结,如果1 ,就会吧“小”开头的字全部替换为小结加粗,,提问会变成两次重点提问.但是这种写法无法用format,
for w in range(len(old_word)):
f.Text = '{}'.format(old_word[w]) # 旧内容重点提问
# 替换框参数
f.Replacement.ClearFormatting() # 清除原有格式
# f.Replacement.Text = '^&' # 替换框内容
f.Replacement.Text = '{}'.format(new_word[w]) # 替换框内容
f.Replacement.Font.Bold = True # 替换文本设置为加粗
f.Execute(Replace=constants.wdReplaceAll) # 执行,查找全部
i += 1
aDoc.SaveAs(new) # 保存并关闭文件,根据需要设置
aDoc.Close() # 保存并关闭文件,根据需要设置
print(f'完成,共替换了{i}个表格')