Python: ошибка при открытии книги Excel с win32com
Я пытаюсь сделать программу для открытия существующих файлов Excel, чтобы читать и записывать их содержимое. У меня уже есть проблемы с открытием файлов.
Мой код:
def open_sheet():
excel = win32com.client.Dispatch("Excel.Application")
wb = excel.Workbooks(r'C:\Users\<username>\Documents\<more file path>\test.xls').Open()
ws = wb.Worksheets('abc') # there is a worksheet called abc.
excel.Visible = True
Примечание. Для краткости я сократил пути к файлам. Файл.py и файл test.xls находятся в одной папке.
Ошибка:
Traceback (most recent call last):
File "C:\Users\<username>\Documents\<more file path>\automation code.py", line 37, in <module>
open_sheet()
File "C:\Users\<username>\Documents\<more file path>\automation code.py", line 33, in open_sheet
wb = excel.Workbooks(r'C:\Users\<username>\Documents\<more file path>\test.xls').Open()
File "C:\Users\<username>\AppData\Local\Programs\Python\Python36-32\lib\site-packages\win32com\gen_py\00020813-0000-0000-C000-000000000046x0x1x9\Workbooks.py", line 198, in __call__
ret = self._oleobj_.InvokeTypes(0, LCID, 2, (13, 0), ((12, 1),),Index
pywintypes.com_error: (**-2147352567**, '例外が発生しました。', (0, None, None, None, 0, -2147352565), None)
Примечание: я использую японский компьютер. Предложение на японском языке означает "Исключение произошло".
Я попытался узнать больше об ошибке:
import win32api
win32api.FormatMessage(**-2147352567**)
Output:
'例外が発生しました。\r\n'
(The translation, I think, is: 'Exception occurred. \r\n')
Я нашел этот вопрос. В нем номер ошибки тот же, но их проблема в неправильном названии листа. Мое имя листа 'abc' действительно существует в файле Excel.
Следующее может также быть полезной диагностической информацией. Этот код работает (для создания и открытия новой рабочей книги):
def make_xl():
o = win32com.client.Dispatch("Excel.Application")
o.Visible = 1
o.Workbooks.Add() # for office 97 – 95 a bit different!
o.Cells(1,1).Value = "Hello"
Другая информация: установлен Windows 10 Python 3.6 Python win (pywin32 build 222)
Я новичок в использовании win32com. Пожалуйста, помогите мне решить эту проблему.
2 ответа
Я думаю, что ваша проблема исходит от:
wb = excel.Workbooks(r'C:\Users\<username>\Documents\<more file path>\test.xls').Open()
Путь к вашему файлу должен быть в Open()
такие как:
wb = excel.Workbooks.Open(r'C:\Users\<username>\Documents\<more file path>\test.xls')
Также обратите внимание, что после () нет Workbooks
как в вашем втором коде. Этот способ работает для меня.
Вы можете попробовать обновить win32com с помощью следующей команды: pip install pywin32 --upgrade