You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python读取docx指定表格(3-9)的指定行并导出至Excel

解决方法

你的原代码存在缩进错误、变量名写错(rows.cells应为row.cells)、df未初始化的问题,且没有实现表格和行的筛选逻辑。下面是修正后的代码,完全满足你的需求:

from docx.api import Document
import pandas as pd

# 加载目标docx文档
document = Document("你的文件名.docx")
# 用于存储所有筛选后的数据
all_filtered_data = []

# 筛选第3至第9号表格(Python是0索引,对应列表切片[2:9],包含索引2到8的表格)
for table in document.tables[2:9]:
    # 提取每个表格的前4行
    for row in table.rows[:4]:
        # 取出该行每个单元格的文本,顺便去掉前后空白
        row_content = [cell.text.strip() for cell in row.cells]
        all_filtered_data.append(row_content)

# 将收集到的数据转为DataFrame
result_df = pd.DataFrame(all_filtered_data)
# 根据实际表格列数设置列名,按需修改
result_df.columns = ["Column1", "Column2", "Column3", "Column4"]

# 导出到Excel,index=False表示不导出索引列
result_df.to_excel("筛选结果.xlsx", index=False)

关键细节说明:

  • 表格范围控制:document.tables[2:9]是因为Python列表从0开始计数,第3个表格对应索引2,第9个对应索引8,切片[2:9]会精准包含这部分表格。
  • 行范围控制:table.rows[:4]直接截取每个表格的前4行,无需遍历全部行,更高效。
  • 数据收集方式:用列表先收集所有行数据再转DataFrame,比原代码里的df.append更高效,且append已被Pandas弃用。
  • strip()作用:去除单元格文本前后的空白字符,让导出的数据更整洁,不需要的话可以删掉这个方法。

如果你的目标表格列数不一致,导出时可能出现列对齐问题,确保要提取的表格列数统一,或者根据实际情况调整列名设置。

内容的提问来源于stack exchange,提问作者3290_ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 03:12:58