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

如何使用pandas读取Excel的已定义名称(defined name)单元格值?

如何用Pandas获取Excel的已定义单元格名称?

Pandas本身没有提供直接读取Excel已定义名称的API,但可以结合轻量的Excel元数据读取工具,既保证大文件读取效率,又能拿到目标单元格的定义名称,以下是两种可行方案:

方案一:结合openpyxl读取元数据(无额外环境依赖)

openpyxl可以仅加载工作簿的元数据(包括定义名称),不需要读取全表数据,效率很高,适合大文件场景:

from openpyxl import load_workbook
import pandas as pd

# 仅加载工作簿元数据,不读取工作表内容
wb = load_workbook('your_file.xlsx', read_only=True, data_only=False)
defined_names = wb.defined_names

# 查找目标单元格(示例为Sheet1的A1)的定义名称
target_cell = 'Sheet1!A1'
cell_name = None
for name in defined_names:
    for sheet, coord in defined_names[name].destinations:
        if f"{sheet}!{coord}" == target_cell:
            cell_name = name
            break
    if cell_name:
        break

# 用Pandas高效读取数据
df = pd.read_excel('your_file.xlsx')

print(f"单元格A1的定义名称:{cell_name}")

方案二:用xlwings调用本地Excel(需Excel环境)

如果你的环境安装了Excel,可以用xlwings直接获取定义名称,逻辑更直观:

import xlwings as xw
import pandas as pd

# 后台打开工作簿,不显示界面
with xw.Book('your_file.xlsx', visible=False) as wb:
    cell_name = None
    for name in wb.names:
        # 匹配目标工作表和单元格地址
        if (name.refers_to_range.sheet.name == 'Sheet1' 
            and name.refers_to_range.address == '$A$1'):
            cell_name = name.name
            break

df = pd.read_excel('your_file.xlsx')
print(f"单元格A1的定义名称:{cell_name}")

说明

  • 方案一无需额外依赖Excel环境,仅用openpyxl读取元数据,不会影响Pandas读取大文件的效率;
  • 方案二更适合经常和Excel交互的场景,但需要本地安装Excel软件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:27:12