java client版本选择_如何选择win32com.client必须在python中使用的excel版本?

本文探讨了在Python中使用win32com.client与不同版本的Excel交互时遇到的问题。通过Dispatch方法尝试指定Excel版本,但发现无法同时控制不同版本的Excel实例,原因是它们共享相同的CLSID。解决方法包括手动修改注册表或重新安装较旧的Excel版本。
摘要由CSDN通过智能技术生成

对于Excel 2013,您可以键入:

o = win32com.client.Dispatch("Excel.Application.15")

因为该程序位于以下某处:

C:\Program Files (x86)\Microsoft Office\Office15\EXCEL.EXE

由于我没有安装任何其他版本,我想如果您只需用您需要的版本替换 15 就可以了 . 您可以看到命令启动的二进制文件的路径,例如 . 过程探索者 .

编辑:这不可能“以编程方式”:(

尝试过这个之后:

excel15 = win32com.client.dynamic.Dispatch("Excel.Application.15")

excel14 = win32com.client.dynamic.Dispatch("Excel.Application.14")

产生这样的对象:

>> print excel15

>> print excel14

在进程资源管理器中只能看到一个Excel(14)实例 . 干

excel15.Visible = True

证实了这一点 .

事实证明,使用自动化来控制两个版本的Excel是不可能的 . 检查注册表,程序( Excel.Application.14 和 15 )共享相同的CLSID . 每个CLSID只有一个 LocalServer (我的计算机上是 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\{00024500-0000-0000-C000-000000000046}\LocalServer ) . 此LocalServer指向我计算机上最后安装的版本Excel14(试用版) . 这是 Dispatch 调用创建的唯一对象 .

所有这些都解释为here(§"Using Automation to Control Microsoft Excel") .

有希望

正如我所说,这个 LocalServer 指向最后安装的版本 . 因此,您有机会实现您想要的目标:

要么您有信心手动更改注册表 . 我会说"easy"(更改 LocalServer 指向的应用程序,以及 Excel.Application 条目的默认应用程序),但我更喜欢以下简单的解决方案

重新安装2007应用程序(当然,如果可以的话) . 这是一个糟糕/不优雅但简单的修复 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值