如何在Python中导入COM对象名称空间/枚举?

我是相对较新的编程/ python,所以我会很感激任何帮助,我可以得到。 我想通过COM使用Excel将excel文件保存为特定的格式。 这里是代码:

import win32com.client as win32 def excel(): app = 'Excel' x1 = win32.gencache.EnsureDispatch('%s.Application' % app) ss = x1.Workbooks.Add() sh = ss.ActiveSheet x1.Visible = True sh.Cells(1,1).Value = 'test write' ss.SaveAs(Filename="temp.xls", FileFormat=56) x1.Application.Quit() if __name__=='__main__': excel() 

我的问题是如何指定FileFormat,如果我不明确知道它的代码? 浏览文档我find关于FileFormat对象的引用。 我无法知道如何访问XlFileFormat对象 ,并以我可以find它的枚举值的方式导入它。

谢谢!

这个问题有些陈旧,但是对于那些从Google来的用户(和我一样),我的解决scheme是通过win32com.client.constants对象访问常量,而不是像Ericbuild议的那样访问应用程序对象本身。 这可以让你像使用VBE一样使用枚举常量:

 >>> import win32com.client >>> xl = win32com.client.gencache.EnsureDispatch('Excel.Application') >>> C = win32com.client.constants >>> C.xlWorkbookNormal -4143 >>> C.xlCSV 6 >>> C.xlErrValue 2015 >>> C.xlThemeColorAccent1 5 

另外,除非手动运行makepy实用程序,否则如果使用常规win32com.client.Dispatch(..)方法初始化应用程序,这是我遇到的另一个问题,常量可能不可用。 使用win32com.client.gencache.EnsureDispatch(..) (如提问者所做的那样)在运行时检查并生成Python绑定(如果需要的话)。

我发现这个ActiveState页面是有帮助的。

当我使用COM访问快速手册时,我可以达到在对象的常量成员下定义的常量 。 代码看起来像这样(你会在第三行中):

 self._session_manager.OpenConnection2("", application_name, QBFC8Lib.constants.ctLocalQBD) 

我不确定这是否会奏效,但试试这个:

 import win32com.client as win32 def excel(): app = 'Excel' x1 = win32.gencache.EnsureDispatch('%s.Application' % app) ss = x1.Workbooks.Add() sh = ss.ActiveSheet x1.Visible = True sh.Cells(1,1).Value = 'test write' ss.SaveAs(Filename="temp.xls", FileFormat=x1.constants.xlWorkbookNormal) x1.Application.Quit() if __name__=='__main__': excel() 

将xlWorkbookNormalreplace为您尝试在您的问题中发布的X1FileFormat网页中select的格式。

所有的文件格式常量都logging在这里

作为一般规则,我发现在Excel中预先编写vba ide中的任何代码是非常有用的。 这样你就可以找出你需要在你的python代码中使用的所有常量等值。 你也可以确保东西在更受控制的环境中工作。