我有一个Excel工作簿,其中有一个名为' Professional Staff'的工作表。在该表上,有一系列名为' ProStaff'的单元格。我使用以下代码检索这些单元格中的值列表:
import openpyxl
wb = openpyxl.load_workbook(filename='SOexample.xlsx', read_only=True)
#Get the ProStaff range values
ProStaffRange = wb.defined_names['ProStaff']
#returns a generator of (worksheet title, cell range) tuples
dests = ProStaffRange.destinations
#use generator to create a list of (sheet, cell) tuples
cells = []
for title, coord in dests:
ws = wb[title]
cells.append(ws[coord])
#Above was from the OpenPyXL website
#Below is my best attempt to retrieve the values from those cells
cellsStr = []
startChar = '.'
stopChar = '>'
for item in cells[0]:
itemStr = str(item)
cellsStr.append( (itemStr.split("'")[1].strip(), itemStr[itemStr.find(startChar)+1:itemStr.find(stopChar)]) )
for item in cellsStr:
print(wb[item[0]][item[1]].value)
我操作的字符串操作类似于:
(<ReadOnlyCell 'Professional Staff'.A1>,)
并将其变为:
('Professional Staff', 'A1')
在我看来,应该有一种方法直接使用ReadOnlyCell项目来检索它们的值,但我还没有弄清楚如何。
答案 0 :(得分:1)
尝试一下,根据我在其他地方看到的内容进行修改,它适用于单单元格命名范围:
wb = load_workbook('filename.xlsx', data_only=True)
ws = wb['sheet_name']
val=ws[list(wb.defined_names['single_cell_named_range'].destinations)[0][1]].value
print(val)
我正在使用Openpyxl 2.5.12。