Python:使用win32com

时间:2018-04-03 02:53:38

标签: python excel win32com pywin

我正在尝试创建一个程序来打开现有的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)

注意:我使用的是日本电脑。日语中的句子表示&#39;异常发生&#39;。

我试图找出有关错误的更多信息:

import win32api
win32api.FormatMessage(**-2147352567**)

Output:
'例外が発生しました。\r\n'
(The translation, I think, is: 'Exception occurred. \r\n')

我找到了this question。在其中,错误号是相同的,但他们的问题是错误的工作表名称。我的工作表名称,&#39; abc&#39;确实存在于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的新手。请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

我认为您的问题来自:

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之后没有()。这种方式适合我。