背景需求:
【技术类-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 += 1aDoc.SaveAs(new) # 保存并关闭文件,根据需要设置
aDoc.Close() # 保存并关闭文件,根据需要设置print(f'完成,共替换了{i}个表格')