sam*_*sam 10 python windows excel win32com
我有一个excel 2007文件(*.xlsx),它将通过python脚本打开.但问题是我的计算机上安装了两个版本的MS office(2003和2007).虽然我尝试将Excel 2007作为打开xlsx文件的默认应用程序,但win32com.client正在尝试使用Excel 2003打开我的xlsx文件.此外,这将恢复Excel 2003作为默认应用程序.
有没有办法强制win32com.client选择Excel 2007来打开xlsx文件?
对于Excel 2013,您可以键入:
o = win32com.client.Dispatch("Excel.Application.15")
Run Code Online (Sandbox Code Playgroud)
因为该程序位于以下某处:
C:\Program Files (x86)\Microsoft Office\Office15\EXCEL.EXE
Run Code Online (Sandbox Code Playgroud)
由于我没有安装任何其他版本,我想如果你只需要替换15你需要的版本就可以了.您可以看到命令启动的二进制文件的路径,例如.过程探索者.
尝试过这个之后:
excel15 = win32com.client.dynamic.Dispatch("Excel.Application.15")
excel14 = win32com.client.dynamic.Dispatch("Excel.Application.14")
Run Code Online (Sandbox Code Playgroud)
产生这样的对象:
>> print excel15
<COMObject Excel.Application.15>
>> print excel14
<COMObject Excel.Application.14>
Run Code Online (Sandbox Code Playgroud)
在进程资源管理器中只能看到一个Excel(14)实例.干
excel15.Visible = True
Run Code Online (Sandbox Code Playgroud)
证实了这一点.
事实证明,使用自动化来控制两个版本的Excel是不可能的.检查注册表,程序(Excel.Application.14和15)共享相同的CLSID.LocalServer每个CLSID 只有一个(HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\{00024500-0000-0000-C000-000000000046}\LocalServer在我的计算机上).此LocalServer指向我计算机上最后安装的版本Excel14(试用版).这是该Dispatch调用创建的唯一对象.
所有这些都在这里解释(§"使用自动化控制Microsoft Excel").
正如我所说,这LocalServer指向最后安装的版本.因此,您有机会实现您想要的目标:
LocalServer,以及Excel.Application条目的默认应用程序),但我更喜欢以下简单的解决方案| 归档时间: |
|
| 查看次数: |
4244 次 |
| 最近记录: |