"Worksheet range names does not exist" openpyxl 中的KeyError
"Worksheet range names does not exist" KeyError in openpyxl
首先让我说我已经尝试寻找,但似乎找不到类似的情况,所以如果您觉得这很熟悉,请不要太难过。我正在使用 Python 2.7 和 openpyxl 版本 2.2.5(我需要使用 2.7,并且由于其他原因使用了旧模块.)
一般来说,我是 Python 和 read/write 代码的新手,所以我在实施它之前在命令行上对其进行了测试:
我在 Python27 文件目录中创建了一个文件 foo.xlsx
,其中包含我通过 Excel.
[ 手动输入的一些值=46=]
然后我在 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 手动输入的内容 - 手动输入的单元格返回 None 或 None 类型。问题似乎出在手动输入的单元格上。
我确实在访问文件之前点击了保存,不用担心
这是在同一个目录中,所以我知道这不是位置问题。
我不太确定你需要做什么,但要将 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()
首先让我说我已经尝试寻找,但似乎找不到类似的情况,所以如果您觉得这很熟悉,请不要太难过。我正在使用 Python 2.7 和 openpyxl 版本 2.2.5(我需要使用 2.7,并且由于其他原因使用了旧模块.)
一般来说,我是 Python 和 read/write 代码的新手,所以我在实施它之前在命令行上对其进行了测试:
我在 Python27 文件目录中创建了一个文件
[ 手动输入的一些值=46=]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模块有关。我继续这样做 运行 整个过程,但它导致了同样的错误。
有人可以让我知道我正在做什么 wrong/how 来解决这个问题吗?
附加信息:
我之前成功写入一个空文件,然后读取值。这为我提供了正确的值,除了我通过 Excel 手动输入的内容 - 手动输入的单元格返回 None 或 None 类型。问题似乎出在手动输入的单元格上。
我确实在访问文件之前点击了保存,不用担心
这是在同一个目录中,所以我知道这不是位置问题。
我不太确定你需要做什么,但要将 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()