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

Другие вопросы по тегам