最近要批量修改Word内容,尝试用Python写一段代码,留存一下。
- from docx import Document
- import os
- #定义了一个modify_header函数来修改单个文档的页眉章节。该函数接受两个参数:document_path是要修改的文档路径,new_section是新的章节内容。
- #函数首先打开文档并获取第一个节的页眉内容。然后,它遍历页眉的段落,并将每个段落的文本内容设置为新的章节内容。
- def modify_header(document_path, new_section):
- """
- 修改文档的页眉章节
- """
- # 获取第一个节的页眉
- section = document.sections[0]
- header = section.header
- # 修改页眉内容
- for paragraph in header.paragraphs:
- paragraph.text = new_section
- #定义了一个get_file_names函数,它接受一个路径作为参数,并返回该路径下的文件名列表
- def get_file_names(path):
- """
- 获取指定路径下的文件名列表
- """
- file_names = []
- for file in os.listdir(path):
- if os.path.isfile(os.path.join(path, file)):
- file_names.append(file)
- return file_names
- #定义了一个delete_content函数来删除文档中指定的内容。该函数接受两个参数:document_path是要删除内容的文档路径,content_to_delete是要删除的内容
- def delete_content(document_path, content_to_delete):
- """
- 删除文档中指定的内容
- """
- # 遍历文档的段落
- for paragraph in document.paragraphs:
- if content_to_delete in paragraph.text:
- # 删除包含指定内容
- paragraph.text = ""
- # 遍历文档的表格
- for table in document.tables:
- for row in table.rows:
- for cell in row.cells:
- if content_to_delete in cell.text:
- # 删除包含指定内容的单元格
- cell.text = ""
- #授课日期列表
- sk_data=[
- '2023-04-12',
- '2023-04-14',
- '2023-04-17',
- '2023-04-19',
- '2023-04-21',
- '2023-04-24',
- '2023-04-26',
- '2023-04-28',
- '2023-05-08',
- '2023-05-10',
- '2023-05-12',
- '2023-05-15',
- '2023-05-17',
- '2023-05-19',
- '2023-05-22',
- '2023-05-24',
- '2023-05-26',
- '2023-05-29',
- '2023-05-31',
- '2023-06-02',
- '2023-06-05',
- '2023-06-07',
- '2023-06-09',
- '2023-06-12',
- '2023-06-14',
- '2023-06-16',
- '2023-06-19',
- '2023-06-21',
- ]
- # 指定路径
- path = 'H:\\2023.6\\'
- # 获取路径下的文件名列表
- file_names = get_file_names(path)
- # 打印文件名列表,了解目录文件
- for file_name in file_names:
- print(path + file_name)
- #正式开始修改文件内容:
- index=0
- for file_name in file_names:
- # 打开包含表格的Word文档
- doc_path = path + file_name
- document = Document(doc_path)
- #修改页眉内容
- new_section="信息技术"
- modify_header(doc_path,new_section)
- #删除指定内容
- content_to_delete="教学设计范例"
- delete_content(doc_path,content_to_delete)
- # 获取第一个表格
- table = document.tables[0]
- # 获取表格的行数和列数
- num_rows=len(table.rows)
- num_columns=len(table.columns)
- # 打印行数和列数
- print(num_rows,num_columns)
- #打印授课日期下单元格内容
- print(table.cell(2,6).text)
- # 修改授课日期表格内容
- row_index = 2
- column_index = 6
- new_value = "2023-4-12"
- table.cell(row_index, column_index).text = sk_data[index]
- #班级
- table.cell(2,5).text="高一计算机"
- # 保存修改后的文档
- output_path = path + file_name
- document.save(output_path)
- index=index+1
继续阅读
评论