Почему я получаю KeyError за попытку открыть книгу Excel с помощью xlrd - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь перебрать папку электронных таблиц Excel и открыть их для извлечения данных и отправки в базу данных.До сих пор я получаю сообщение об ошибке при попытке использовать xlrd.open_workbook.Я пытаюсь понять, что такое ключевая ошибка и почему я ее получаю.Также желательны некоторые способы его преодоления.

import xlrd as rd

book= 
rd.open_workbook("C:/Users/me/Desktop/PythonSpyderDesktop/Extract/Bob 
Trucking & Warehouse, LLC.xlsm")

Я также пытался:

path = "C:\\Users\\me\\Desktop\\PythonSpyderDesktop\\Extract\\"
book= 
rd.open_workbook(os.path.join(path,'Bob 
Trucking & Warehouse, LLC.xlsm'))

Это моя ошибка: обратная связь (последний последний вызов):

File "<ipython-input-99-682ed177f4f5>", line 1, in <module>
book= rd.open_workbook("C:/Users/me/Desktop/PythonSpyderDesktop/Extract/Bob 
Trucking & Warehouse, LLC.xlsm")

File "C:\Python3\WPy-3670\python-3.6.7.amd64\lib\site- 
packages\xlrd\__init__.py", line 143, in open_workbook
ragged_rows=ragged_rows,

File "C:\Python3\WPy-3670\python-3.6.7.amd64\lib\site- 
packages\xlrd\xlsx.py", line 808, in open_workbook_2007_xml
x12book.process_stream(zflo, 'Workbook')

File "C:\Python3\WPy-3670\python-3.6.7.amd64\lib\site- 
packages\xlrd\xlsx.py", 
line 265, in process_stream
meth(self, elem)

File "C:\Python3\WPy-3670\python-3.6.7.amd64\lib\site- 
packages\xlrd\xlsx.py", line 374, in do_sheet
reltype = self.relid2reltype[rid]

KeyError: ''

Если бы я мог получить больше понимания ключевой ошибки, которая была бы потрясающей.Я знаю, что это связано с объектом словаря, но я программировал на python в течение 2 дней, так что я все еще постигаю основы.Что означает ошибка «» и как ее можно исправить?

Спасибо!

1 Ответ

0 голосов
/ 14 февраля 2019

Ваш первый фрагмент кода, кажется, работает нормально, если вы разберетесь со строками, в которых находится код.

import xlrd as rd

book= rd.open_workbook(r'C:/Users/me/Desktop/PythonSpyderDesktop/Extract/Bob Trucking & Warehouse, LLC.xlsm')

Программа запуталась и подумала, что имя файла закончилось на

/Extract/Bob 

, а вторая начинается с

Trucking & Warehouse, LLC.xlsm")

, означая, что вы ожидаете, что вы будете использовать два набора кавычек для обозначения двух разных строк.Вы также можете поставить 'r' перед путями к файлам, поскольку это означает, что интерпретатор будет игнорировать специальные символы, такие как \ $.

...