xl.Workbook()(pyvot)不会打开excel工作簿

时间:2012-04-30 08:33:11

标签: python windows excel

我想在pyvot中使用this tutorial创建一个Excel工作簿。 Pyvot安装正确,因为我可以导入它没有错误。但是当我这样做时:

import xl
xl.Workbook()

我收到此错误:

Traceback (most recent call last):
  File "", line 1, in 
AttributeError: 'module' object has no attribute 'workbook'
>>> xl.Workbook()
Traceback (most recent call last):
  File "", line 1, in 
  File "C:\Python27\lib\site-packages\pyvot-0.1.2-py2.7.egg\xl\sheet.py", line 91, in     __init__
    excel = win32.gencache.EnsureDispatch('Excel.Application')
  File "C:\Python27\lib\site-packages\win32com\client\gencache.py", line 529, in EnsureDispatch
    disp = win32com.client.Dispatch(prog_id)
  File "C:\Python27\lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch
    dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
  File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 108, in _GetGoodDispatchAndUserName
    return (_GetGoodDispatch(IDispatch, clsctx), userName)
  File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 85, in _GetGoodDispatch
    IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
com_error: (-2147221005, 'Invalid class string', None, None)

我没有为Visual Studio安装Python工具。

  1. 我是否需要使用Python工具进行Visual Studio(PTVS)才能使用pyvot?

  2. 可以降低excel版本,然后excel 2010(例如excel 2007)可以使用pyvot吗?

  3. 我是否需要在excel中设置任何内容以使其与pyvot一起使用?

  4. 如果上述问题之一的答案没有解释为什么我无法使代码段正常工作,我该怎么做才能让它正常工作?


    我已经安装了excel 2010. Pyvot已正确安装,因为我在import xl时没有收到任何错误。当我在pywin32中输入以下内容时:

    import xl
    xl.Workbook()
    

    我得到这个NameError:

    Traceback (most recent call last):
      File "<interactive input>", line 1, in <module>
    NameError: name 'xl' is not defined
    

    有谁知道为什么?

2 个答案:

答案 0 :(得分:2)

来自Pyvot主页:

  

Pyvot要求CPython 2.6或2.7安装了Python for Windows扩展(pywin32)和Office 2010.如果干净的Python会话可以导入win32com模块,则可以安装Pyvot。

因此,根据描述,不需要PTVS,Excel 2010是必需的,并且您需要在当前解释器中启动并运行win32com模块。我没有任何问题地使用这种配置。

答案 1 :(得分:1)

发生在我身上,我今天才尝试过。
尝试: xl.workbooks()

与VBA代码一致。