如何导入Python中的COM对象的命名空间/枚举?(How do I import a COM o

2019-09-02 08:55发布

我是比较新的编程/ Python的,所以我想感谢所有帮助我可以得到的。 我想一个Excel文件保存为通过COM使用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如果我不明确知道它的代码? 通过我找到有关的FileFormat对象的引用文档浏览。 我对如何访问无能XlFileFormat对象并在某种程度上,我可以找到它的枚举值导入。

谢谢!

Answer 1:

这个问题有点陈旧,但对于那些达到从谷歌这个页面(像我一样)我溶液通过访问该常数win32com.client.constants而不是对象的应用程序对象本身是由Eric建议 。 这允许您使用枚举常量就像在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是有益的。



Answer 2:

当我用COM访问QuickBooks的,我可以达到下的对象的一个常量构件中定义的常量。 该代码看起来是这样的(你会在第三行位数的):

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()

与任何格式的努力在X1FileFormat网页,你在你的问题发布到选择替换xlWorkbookNormal。



Answer 3:

所有的文件格式常数都记录在这里



Answer 4:

作为一般规则,我觉得它真的很有用预先写在Excel中的VBA IDE的任何代码。 这样你可以找到你需要你的Python代码中使用常量等所有的值。 您也可以确保的东西会从一个更可控的环境中工作。



文章来源: How do I import a COM object namespace/enumeration in Python?