![](/img/trans.png)
[英]Python: how can I import the namespace of some object to current namespace?
[英]How do I import a COM object namespace/enumeration in Python?
我对编程/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? 浏览文档时,我找到了关于 FileFormat 对象的参考。 我对如何访问XlFileFormat 对象并以我可以找到它的枚举值的方式导入它一无所知。
谢谢!
这个问题有点陈旧,但是对于那些从 Google 访问此页面的人(就像我一样),我的解决方案是通过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 页面很有帮助。
当我使用 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()
将 xlWorkbookNormal 替换为您在问题中发布的 X1FileFormat 网页中尝试选择的任何格式。
所有文件格式常量都记录在此处
作为一般规则,我发现在 Excel 中预先记录 VBA IDE 中的任何代码非常有用。 通过这种方式,您可以找出需要在 Python 代码中使用的常量等的所有值。 您还可以确保在更可控的环境中工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.