python – “工作表范围名称不存在”openpyxl中的KeyError

让我先说一下,我已经尝试过寻找,但似乎找不到类似的情况,所以如果您对此感到熟悉,请不要太烦恼.我使用的是Python 2.7和openpyxl 2.2.5版本(我需要使用2.7,并且出于其他原因使用了较旧的模块.)

我是Python的新手,一般都是读/写代码,所以我在实现它之前在命令行上测试它:

>我在Python27文件目录中创建了一个文件foo.xlsx,其中包含一些我通过Excel手动输入的值.
>然后我在Python命令行上使用这个简单的代码来测试我的代码

from openpyxl import load_workbook
wb = load_workbook('foo.xlsx')
sheet_ranges = wb['range names']

然后导致以下错误:

File “C:\Python27\lib\openpyxl\workbook.workbook.py”, line 233 in getitem
raise KeyError(“Worksheet {0} does not exist.”.format(key))
KeyError: ‘Worksheet sheet range names does not exist’

所以我认为这与不导入整个openpyxl模块有关.我继续这样做并运行整个过程,但它导致了同样的错误.

有人可以让我知道我做错了什么/如何解决这个问题?

附加信息:

>我之前已成功写入空文件,然后读取值.这给了我正确的价值,除了我通过Excel手动编写的内容 – 手动输入的单元格返回None或Nonetype.问题似乎是手动输入的细胞.
>我确实在访问它之前点击了保存文件,不用担心

这是在同一目录中,所以我知道这不是一个位置问题.

解决方法:

以下命令没有意义:

sheet_ranges = wb['range names']

通常,您打开一个工作簿,然后访问其中一个工作表,下面给出了一些如何完成此操作的示例:

import openpyxl 

wb = openpyxl.Workbook()
wb = openpyxl.load_workbook(filename = 'input.xlsx')

# To display all of the available worksheet names
sheets = wb.sheetnames
print sheets

# To work with the first sheet (by name)
ws = wb[sheets[0]]
print ws['A1'].value

# To work with the active sheet
ws = wb.active
print ws['A1'].value

# To work with the active sheet (alternative method)
ws = wb.get_active_sheet()
print ws['A1'].value

如果要在工作簿中显示任何命名范围,可以执行以下操作:

print wb.get_named_ranges()
上一篇:python – Openpyxl无法正确删除已创建工作簿中的工作表


下一篇:python – 为什么我的openpyxl WorkBook.active(file_name)给我一个TypeError:对象不可调用?