Позвольте мне предисловие к этому, сказав, что я пробовал искать и не могу найти подобную ситуацию, поэтому, пожалуйста, не слишком расстраивайтесь, если вам это кажется знакомым. Я использую Python 2.7 и openpyxl версия 2.2.5 (мне нужно использовать 2.7, и использовать старый модуль по другим причинам.)«Имена диапазонов рабочих листов не существует» KeyError in openpyxl
Я новичок в Python и для чтения/запись коды в целом, так Я проверяю это в командной строке, прежде чем я его реализации:
Я создал файл,
foo.xlsx
в каталоге файлов python27 с некоторыми значениями, которые я введенными вручную с помощью 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. Проблема, похоже, связана с ячейками с ручным вводом.
я ударил сохранить в файл, прежде чем доступ к ней не беспокойся
Это было в том же каталоге, так что я знаю, что это не было вопросом места.
Hi Martin, ws = wb.get_sheet_by_name (листы [0]) возвращает ту же ошибку. код, который я написал, делает то же самое, за исключением того, что я знаю имя листа, поэтому он присваивает лист, называемый именами диапазонов. Он сказал, что лист Sheet1 не существует –
'ws = wb.active' является обычным способом работы с существующим листом, вы пробовали это? –
Хорошо, что сработало! Большое спасибо мистеру Эвансу! –