当前位置:  开发笔记 > 编程语言 > 正文

通过COM独立控制2个独立的Excel实例......可以这样做吗?

如何解决《通过COM独立控制2个独立的Excel实例可以这样做吗?》经验,为你挑选了1个好方法。

我有一个遗留应用程序,它在许多Excel工作簿中实现.这不是我有权重新实现的,但是我维护的另一个应用程序确实需要能够在Excel工作簿中调用函数.

它已经使用Win32Com库给出了一个python接口.其他进程可以调用我的python包中的函数,然后通过Win32Com调用我需要的函数.

不幸的是COM不允许我指定特定的COM进程,所以目前无论我的服务器有多强大,我只能在计算机上一次控制一个Excel实例.如果我试图运行多个excel实例,则无法确保python层绑定到特定的Excel实例.

我希望能够同时在我的Windows服务器上运行多个我的Excel应用程序.有没有办法做到这一点?例如,我可以划分我的环境,以便我可以运行尽可能多的Excel _ Python组合,因为我的应用程序将支持?



1> Craig McQuee..:

请参阅此处引用的Tim Golden的"启动COM应用程序的新实例",它提供了使用提示

xl_app = DispatchEx("Excel.Application")

而不是

xl_app = Dispatch("Excel.Application")

开始一个单独的过程.所以你应该能够做到:

xl_app_1 = DispatchEx("Excel.Application")
xl_app_2 = DispatchEx("Excel.Application")
xl_app_3 = DispatchEx("Excel.Application")

请注意,当您完成后,要关闭应用程序,我发现有必要这样做:

xl_app.Quit()
xl_app = None

我发现进程不会关闭,直到xl_app = NonePython COM对象的引用计数变为零.

注意我还有一个问题:当我的Python程序运行时,如果我在资源管理器中双击一个Excel文件(至少在Win2k上),它最终会在Python启动的现有Excel进程中打开该文件(正在运行隐藏),这会破坏Python程序.我还没有找到解决方案.

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有