Python 使用openpyxl访问具有特定作用域的命名范围

Python 使用openpyxl访问具有特定作用域的命名范围,python,openpyxl,Python,Openpyxl,如何使用openpyxl访问具有特定范围的命名范围?我有一个Excel工作簿,其中包含多个工作表,这些工作表使用相同的名称命名了范围 如果我尝试在工作表上使用get_named_range函数,它不一定返回正确的范围,并引发异常。e、 g >>> from openpyxl import load_workbook >>> wb =

如何使用
openpyxl
访问具有特定范围的命名范围?我有一个Excel工作簿,其中包含多个工作表,这些工作表使用相同的名称命名了范围

如果我尝试在工作表上使用
get_named_range
函数,它不一定返回正确的范围,并引发异常。e、 g

>>> from openpyxl import load_workbook                                                                
>>> wb = load_workbook(filename='database.xlsx')                                      
>>> wb['Residential Damages'].get_named_range('MCM')                                                     
Traceback (most recent call last):                                                                       
  File "<stdin>", line 1, in <module>                                                                    
  File "c:\Python27\lib\site-packages\openpyxl\worksheet\worksheet.py", line 480, in get_named_range     
    raise NamedRangeException(msg)                                                                       
openpyxl.exceptions.NamedRangeException: Range $B$3:$B$17 is not defined on worksheet Residential Damages

我知道这已经很晚了,但希望这个答案能帮助其他面临同样问题的人

如果您希望根据范围有限(即非全局范围)的已定义名称获取范围,那么在本例中,您将查找范围为“住宅损害赔偿”的“MCM”范围

您可以使用
get(name,scope)
方法

因此,在您的问题中,您可以执行以下操作:

import openpyxl

wb = load_workbook(filename='database.xlsx')
#You would have to find the sheet ID,
sheetID = wb.sheetnames.index("Residential Damages") 
#Finally the range
rng = wb.defined_names.get('MCM', sheetid)
希望这有帮助

import openpyxl

wb = load_workbook(filename='database.xlsx')
#You would have to find the sheet ID,
sheetID = wb.sheetnames.index("Residential Damages") 
#Finally the range
rng = wb.defined_names.get('MCM', sheetid)