"Worksheet range names does not exist" openpyxl 中的KeyError

"Worksheet range names does not exist" KeyError in openpyxl

首先让我说我已经尝试寻找,但似乎找不到类似的情况,所以如果您觉得这很熟悉,请不要太难过。我正在使用 Python 2.7openpyxl 版本 2.2.5(我需要使用 2.7,并且由于其他原因使用了旧模块.)

一般来说,我是 Python 和 read/write 代码的新手,所以我在实施它之前在命令行上对其进行了测试:

  1. 我在 Python27 文件目录中创建了一个文件 foo.xlsx,其中包含我通过 Excel.

    [ 手动输入的一些值=46=]
  2. 然后我在 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模块有关。我继续这样做 运行 整个过程,但它导致了同样的错误。

有人可以让我知道我正在做什么 wrong/how 来解决这个问题吗?

附加信息:

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

我不太确定你需要做什么,但要将 Excel 电子表格读入 python,我通常使用 xlrd(对我来说更容易习惯) .参见示例:

import xlrd

workbook = xlrd.open_workbook(in_fname)
worksheet = workbook.sheet_by_index(0)

要写入 Excel 电子表格,我使用 xlsxwriter:

import xlsxwriter

workbook = xlsxwriter.Workbook(out_fname)
worksheet = workbook.add_worksheet('spreadsheet_name')

希望对您有所帮助。

以下命令没有意义:

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()