import os
from docx import Document
def remove_non_table_content(doc):
"""
删除文档中除表格之外的所有内容
"""
# 遍历文档中的所有段落,删除非表格内容
for paragraph in list(doc.paragraphs): # 使用list()避免迭代时修改问题
if not any(table for table in doc.tables if paragraph in table._element): # 检查段落是否属于表格
p = paragraph._element
p.getparent().remove(p)
# 收集需要删除的图片 rels 的键
rels_to_remove = []
for rel in doc.part.rels.values():
if "image" in rel.target_ref:
rels_to_remove.append(rel.rId)
# 删除图片 rels
for rId in rels_to_remove:
doc.part.rels.pop(rId)
def truncate_tables_to_six_rows(doc):
"""
将文档中的所有表格截断为前6行
"""
for table in doc.tables:
# 如果表格行数大于6,删除多余的行
if len(table.rows) > 6:
for row in list(table.rows)[6:]: # 使用list()避免迭代时修改问题
row._element.getparent().remove(row._element)
def process_docx_files(folder_path):
"""
批量处理文件夹中的docx文件
"""
for filename in os.listdir(folder_path):
if filename.endswith(".docx"):
file_path = os.path.join(folder_path, filename)
doc = Document(file_path)
# 删除非表格内容
remove_non_table_content(doc)
# 截断表格为前6行
truncate_tables_to_six_rows(doc)
# 保存修改后的文档
doc.save(file_path)
print(f"Processed and saved: {file_path}")
if __name__ == "__main__":
# 设置文档路径
folder_path = r"Q:\WPS个人云\303815971\WPS云盘\2025VS code"
# 处理文档
process_docx_files(folder_path)