WPS文字中提取表格前6行

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)