pan*_*ita 6 python excel pywin32
当打开例如pywin32的电子表格时,我发现有两个选项:
excel1 = win32com.client.DispatchEx('Excel.Application')
wb = excel1.Workbooks.Open('myxls.xls')
Run Code Online (Sandbox Code Playgroud)
或者我能做到
excel2 = win32com.client.Dispatch('Excel.Application')
wb = excel2.Workbooks.Open('myxls.xls')
Run Code Online (Sandbox Code Playgroud)
而且我想知道这是否有所作为.文档字符串对我没有多大帮助:
>>> w32.Dispatch.__doc__
'Creates a Dispatch based COM object.\n '
>>> w32.DispatchEx.__doc__
'Creates a Dispatch based COM object on a specific machine.\n '
Run Code Online (Sandbox Code Playgroud)
在这个站点中,他们建议DispatchEx可能用于远程访问.
当我只是想在我自己的电脑上自动化电子表格时,我使用哪种方法会有什么不同?
小智 11
这取决于你想要什么.如果Excel已打开,则使用dispatch将在打开的Excel实例中创建新选项卡.如果Excel已打开,则使用dispatchEx将打开Excel的新实例.
DispatchEx没有记录,并且Dispatch已经暗示了实际答案:只要使用Dispatch,除非您有充分的理由相信您有特殊情况。
但是,如果您想知道封面下的差异:
从pywin32 源代码中,您可以看到它DispatchEx尝试返回一个包装好的IDispatchEx接口而不是IDispatch. (考虑到名字,这并不奇怪。)
你可以看看IDispatchExMSDN,你会看到它是
IDispatch 接口的扩展,支持适用于动态语言(例如脚本语言)的功能。
这个想法是,如果你自动化的东西是一个动态对象(比如你在 Python 或 Javascript 中拥有的那种对象),而不是一个静态对象(比如你在 C++ 或 Java 中拥有的那种对象),Visual基本代码可以访问其动态特性——在运行时枚举、添加和删除成员等。
当然,pywin32 几乎可以做 VB 可以做的所有事情,有时您只需要更明确一点。在这种情况下,您需要创建一个DispatchEx,并调用其DeleteMemberByName等方法。
| 归档时间: |
|
| 查看次数: |
8903 次 |
| 最近记录: |