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

Excel已定义名称调用失败,openpyxl执行报AttributeError求助

解决AttributeError: 'Worksheet' object has no attribute 'defined_names'问题

嘿,这个问题一眼就能看出来——你找错属性所属的对象啦!defined_names是Workbook(工作簿)对象的专属属性,不是Worksheet(工作表)的,所以你在worksheet实例上调用它才会抛出这个错误。

修正后的代码

直接在加载后的workbook对象上访问defined_names就行:

import openpyxl
from openpyxl import load_workbook

# 加载目标工作簿
workbook = load_workbook('Saved_Pivots.xlsx')
# 从工作簿对象中获取命名区域
w = workbook.defined_names['efd']
print(w)

额外扩展:获取命名区域对应的实际单元格

如果想要进一步操作这个命名区域里的单元格,可以用destinations()方法解析出它对应的工作表和单元格范围:

# 解析命名区域的目标位置
for sheet_name, cell_range in w.destinations:
    # 定位到对应的工作表
    target_worksheet = workbook[sheet_name]
    # 获取该区域的所有单元格
    cell_group = target_worksheet[cell_range]
    
    # 示例:打印区域内的单元格值
    print(f"工作表「{sheet_name}」中,命名区域「efd」的内容:")
    for row in cell_group:
        print([cell.value for cell in row])

为什么之前的代码会报错?

你之前通过workbook.active拿到的worksheet是单个工作表的实例,而Excel的命名区域(无论是工作簿级还是工作表级)都是在工作簿层面管理的,所以必须从workbook对象去访问defined_names属性,才能找到你在WPS里定义的「efd」区域。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 14:32:36