You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用Python读取XLSX文件工作表中文本框(Textbox)的数据

提取Excel文本框数据的解决方案

嘿,我之前也踩过这个坑!Excel里的文本框属于工作表的形状对象(Shape),不是普通的单元格内容,所以像pandas、openpyxl这类常规解析模块默认不会去读取它们——这不是Bug,只是你没找对处理形状对象的方法~

下面给你两种常用的解决方案,分文件格式来看:

处理.xlsx格式文件(用openpyxl)

openpyxl支持读取工作表的形状对象,只要针对性遍历即可:

首先确保安装了openpyxl:

pip install openpyxl

然后用这段代码提取文本框内容:

from openpyxl import load_workbook

# 加载你的Excel文件
wb = load_workbook('your_excel_file.xlsx')
# 指定要处理的工作表,比如第一个工作表或者按名称指定
ws = wb.active  # 或者 ws = wb['Sheet1']

# 遍历工作表中的所有形状
for shape in ws.shapes:
    # 17是msoTextBox的类型标识,对应文本框
    if shape.shapeType == 17:
        text_content = shape.text
        print(f"找到文本框,内容:{text_content}")
        # 如果你需要定位文本框的位置,还可以用shape.top/shape.left等属性

处理.xls格式文件(用xlwings)

如果是旧版的.xls文件,openpyxl支持不好,可以用xlwings(需要本地安装Excel客户端):

先安装xlwings:

pip install xlwings

示例代码:

import xlwings as xw

# 后台打开Excel,不显示界面
app = xw.App(visible=False)
wb = app.books.open('your_excel_file.xls')
ws = wb.sheets.active

# 遍历所有形状,通过名称判断是否为文本框
for shape in ws.shapes:
    if shape.name.startswith('TextBox'):
        text_content = shape.text
        print(f"找到文本框,内容:{text_content}")

# 记得关闭文件和Excel进程
wb.close()
app.quit()

为什么常规模块提取不到?

像pandas这类工具是基于单元格数据模型设计的,只会读取单元格区域的内容;而文本框属于Excel的绘图层(drawing layer),是独立于单元格的对象,需要单独遍历形状集合才能获取。

如果遇到shapeType不对的情况,可以打印shape.shapeTypeshape.name来确认你的文本框对应的标识,不同Excel版本可能略有差异。

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

火山引擎 最新活动