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

Python如何读取Word文本框内部嵌入的表格数据?

解决方案

你之前使用的doc.Tables只能获取文档主内容区域的顶层表格,嵌入在文本框内的表格属于形状(Shape)对象的内部内容,需要遍历文档的Shapes集合获取文本框,再读取文本框内部的表格即可,完整实现如下:

import win32com.client as win32

# 初始化Word应用
word = win32.gencache.EnsureDispatch('Word.Application')
# 配置后台运行不显示界面、不弹告警
word.Visible = False
word.DisplayAlerts = 0

# 打开目标文档,传入你的Word文件绝对路径
doc = word.Documents.Open(r"C:\xxx\目标文档.docx")

# 收集所有表格:包含主内容表格 + 所有文本框内的表格
all_tables = []
# 先添加主内容区域的普通表格
for t in doc.Tables:
    all_tables.append(t)

# 遍历所有形状对象,筛选文本框
for shape in doc.Shapes:
    # msoTextBox类型对应的常量值为17,判断当前形状是文本框
    if shape.Type == 17:
        # 判断文本框内有内容
        if shape.TextFrame.HasText:
            # 获取文本框内部的文档对象,读取其中的表格
            inner_doc = shape.TextFrame.TextRange.Document
            for t in inner_doc.Tables:
                all_tables.append(t)

# 示例:读取目标表格的所有单元格内容
if all_tables:
    # 可根据需求调整索引,文本框内的表格会排在主内容表格之后
    target_table = all_tables[-1]
    # Word对象模型索引从1开始,注意不要越界
    for row in range(1, target_table.Rows.Count + 1):
        row_content = []
        for col in range(1, target_table.Columns.Count + 1):
            # 去除单元格内容末尾的多余控制符
            cell_text = target_table.Cell(row, col).Range.Text.strip('\x07\x0b\r\n')
            row_content.append(cell_text)
        print(row_content)

# 操作完成后关闭文档、退出Word,避免后台残留进程占用文件
doc.Close(SaveChanges=0)
word.Quit()
  • 若文档存在嵌套文本框,可增加一层递归遍历文本框内部的Shapes集合即可适配
  • 可以直接打印all_tables的长度确认是否成功识别到文本框内的表格

内容的提问来源于stack exchange,提问作者Nima Hojat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:57:04