Oli*_*ver 6 excel win32com python-2.7
我正在使用python 2.7 win32com模块从Python加载MS Excel工作表:
book = xlApp.Workbooks.Open("myFile.xls")
sheet = book.Sheets(1)
Run Code Online (Sandbox Code Playgroud)
Range,Worksheet等的许多方法和属性都使用XlDirection,XlFillWith等枚举.这些定义了常量,例如xlDown,xlUp,xlFillWithContents等.这些常量可以从win32com获得,以便我可以做,例如:
column = outputsSheet.Range("I5:I150")
lastRow = column.End(xlInterop.xlDown)
print "Last row:", lastRow.Row
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为没有定义xlInterop,有没有办法使用win32com访问它?通过反复试验发现xlDown等常量的值是不太实际的.
Ola*_*lav 12
我是win32com的新手,所以我不知道这是否有帮助...尝试启动Excel:
xlApp = win32com.client.gencache.EnsureDispatch("Excel.Application")
Run Code Online (Sandbox Code Playgroud)
这应该运行makepy,你可以在...\Lib\site-packages\win32com\gen_py\00020813-0000-0000-C000-000000000046x0x1x7中找到一些生成的Python文件(最后一个文件夹可能是你的另一个名字,我不知道).检查init .py文件,那里定义了一堆常量.
编辑:您可以使用以下命令访问这些常量:
from win32com.client import constants as c
Run Code Online (Sandbox Code Playgroud)
Edit2:文件夹的路径:
win32com.__gen_path__
Olav 的回答使我能够对关键字“win32com gencacheEnsureDispatch constants”进行搜索,我找到了一些有用的链接。像如何在 Python 中导入 COM 对象命名空间/枚举?,我的问题重复了。这指向客户端 COM 和 Python的 ActiveState 页面快速入门,其中包含对这些内容的介绍。奇怪的是,该页面指出 client.Dispatch 应该足以获取 constnats,但我发现它不是,我必须运行 gencache.EnsureDispatch,然后才出现常量:
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
Run Code Online (Sandbox Code Playgroud)