Accessing enumeration constants in Excel COM using Python and win32com

前端 未结 2 2081
醉话见心
醉话见心 2020-12-19 05:36

I\'m using python 2.7 win32com module to load an MS Excel worksheet from Python:

    book = xlApp.Workbooks.Open(\"myFile.xls\")
    sheet = book.Sheets(1)
<         


        
相关标签:
2条回答
  • 2020-12-19 06:00

    I'm new to win32com, so I don't know if this helps... try to start Excel with:

    xlApp = win32com.client.gencache.EnsureDispatch("Excel.Application")
    

    This should run makepy, and you can find some resulting Python files in ...\Lib\site-packages\win32com\gen_py\00020813-0000-0000-C000-000000000046x0x1x7 (last folder might be another name for you, I dont know). Check the init.py file, there's a bunch of constants defined there.

    Edit: you can access these constants with:

    from win32com.client import constants as c
    

    Edit2: path to folder:

    win32com.__gen_path__

    0 讨论(0)
  • 2020-12-19 06:09

    Olav's answer enabled me to do a search on keywords "win32com gencache EnsureDispatch constants" and I found a few useful links. Like How do I import a COM object namespace/enumeration in Python?, which my question duplicates. This points to an ActiveState page Quick Start to Client side COM and Python with intro to this stuff. Oddly, that page states that client.Dispatch should be sufficient to get constnats, but I found it wasn't, I had to run gencache.EnsureDispatch, only then did the constants appear:

    Portable Python >>> from win32com import client as com
    Portable Python >>> from win32com.client import constants as c
    Portable Python >>> word = com.Dispatch('Word.Application')
    Portable Python >>> c.wdWindowStateMinimize
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
        File "F:\PORTAB~1.1\App\lib\site-packages\win32com\client\__init__.py", line 170, in __getattr__
          raise AttributeError(a)
      AttributeError: wdWindowStateMinimize
    Portable Python >>> word = com.gencache.EnsureDispatch("Word.Application")
    Portable Python >>> c.wdWindowStateMinimize
    2
    
    0 讨论(0)
提交回复
热议问题