python自动化办公之word文本框内容批量修改

       使用word批量制作证书,发现制作好人证书单个保存时有点麻烦, 特用python实现批量修改word文本框内容,生成单个word文件。

       本代码段中涉及word文档包含一张底图图片,及两个文本框。其他童鞋有需要修改多个文本框内容的,可依次添加。

# 导入包
import osimport time
from threading import Thread
import pythoncom
import win32com.client
from openpyxl import load_workbook
# 声明 doc 之前要加入的代码
pythoncom.CoInitialize()
# 模拟打开office
word = win32com.client.Dispatch('Word.Application')
# 后台运行
word.Visible = False
if not os.path.exists('批量创建word证书'):    
    os.mkdir('批量创建word证书')

# 加载证书明细
wb = load_workbook("data.xlsx")
old_text1 = sheet.cell(row=1, column=1).value
old_text2 = sheet.cell(row=1, column=2).value

# 文本框替换函数
def text_box_replace(start_num, end_num):    
    for row in range(start_num, end_num):        
    # 打开模板文件        
    doc = word.Documents.Open(r"模板.docx")        
    # 读取需要替换的值       
    new_text1 = sheet.cell(row=row, column=3).value        
    new_text2 = sheet.cell(row=row, column=11).value        
    for shp in doc.Shapes:            
        if shp.TextFrame.HasText:          
           shp.TextFrame.TextRange.Find.Execute(FindText=old_text1,ReplaceWith=new_text1, Replace=1, Forward=True)
           shp.TextFrame.TextRange.Find.Execute(FindText=old_text2, ReplaceWith=new_text2, Replace=1, Forward=True)
    # 文件保存        
    filename = str(sheet.cell(row=row, column=1).value)        
    doc.SaveAs(r'证书-{}.doc'.format(filename))        
    doc.Close()

# 列表推导式 创建多线程
threads = [Thread(text_box_replace(i, i + 1)) for i in range(2, sheet.max_row + 1, 1)]
# 启动线程
[t.start() for t in threads]
[t.join() for t in threads]

print('证书批量制作完成')

 

你可能感兴趣的:(python自动化办公,python,自动化)