**前言:因为要补充项目资料,只需按模板替换时间,人名,标题等关键信息,其它不做修改
1.导入python库(我使用的python3.9.10)
pip install pandas python-docx
2.需要注意的都在代码注释里写清楚了
from docx import Document
from openpyxl import load_workbook
# @author chu
# @time date 2024-5-11
# @content 根据excel内容,批量修改word文件内容
#定义一个替换的函数··用于替换word表格中的文字
def replace_table_word(doc, old_word, new_word):
for p in doc.tables: # 遍历文档表
for run in p.rows: # 遍历表的行
for cell in run.cells: # 遍历行的单元格
cell.text = cell.text.replace(old_word, new_word) #替换单元格的文字,然后赋值给字块
#定义一个替换的函数··用于替换word段落中的文字
def replace_word(doc, old_word, new_word):
for p in doc.paragraphs: # 遍历文档段落
for run in p.runs: # 遍历段落的字块
run.text = run.text.replace(old_word, new_word) # 替换字块的文字,然后赋值给字块
# 打开工作簿获取工作表
def get_excel_data(excel_file):
title_wb = load_workbook(excel_file) #引入excel文件
title_sheet = title_wb.active
change_docx_data(title_sheet, word_file, min_row)
#将title_wb工作簿中的活动工作表赋值给title_sheet变量。这样就可以通过title_sheet变量来操作这个工作表了。
# 遍历工作表中的数据,将工作表的内容
def change_docx_data(title_sheet, word_file, min_row):
for row in title_sheet.iter_rows(min_row, values_only=True):
# 获取“检查时间”
checkTime = row[colNum1]
# 获取“名字”
name = row[colNum2]
# 获取“文件名称名称”
num = row[colNum3]
# 打开Word文件
doc = Document(word_file) #引入模板文件
# 执行替换函数
#替换段落内容
replace_word(doc, old_word_name, '{}'.format(name))
replace_word(doc, old_word_time, '{}'.format(checkTime))
#替换表格内容
replace_table_word(doc, old_word_name, '{}'.format(name))
replace_table_word(doc, old_word_time, '{}'.format(checkTime))
doc.save(new_column.format(num)) #储存位置
if __name__ == "__main__":
# @文件路径 ***注:word文件必须是保存的.docx格式,否则会报错。***
excel_file = 'I:/平台工作内容/11.项目资料/10.2024年资料补充/运维项目资料补充V1.1-附件2/111/11.xlsx' # 替换为你的Excel文件路径
word_file = 'I:/平台工作内容/11.项目资料/10.2024年资料补充/运维项目资料补充V1.1-附件2/111/平台运行记录.docx' # 替换为你的Word文件路径
new_column = 'I:/平台工作内容/11.项目资料/10.2024年资料补充/运维项目资料补充V1.1-附件2/111/{}.docx' #存放文件的目录
min_row = 2 #excel表格数据行数--不算表头
# @对应制作的表格列数---第一列从0开始
# 获取“检查时间”
colNum1 = 0
# 获取“名字”
colNum2 = 1
# 获取“文件名称名称”
colNum3 = 3
#替换word表格中的内容
old_word_name = 'xxx' #模板word需要替换的内容
old_word_time = '2024.2.1' #模板word需要替换的内容
#第一个方法 读取excel内容
get_excel_data(excel_file)
【效果】
①excel数据表
②word文档
③修改后的效果
④9.1号的文件
⑤9.5号的文件