我有一个旧版应用程序,该应用程序已在许多Excel工作簿中实现。我没有权力重新实现它,但是我确实维护的另一个应用程序确实需要能够调用Excel工作簿中的函数。

使用Win32Com库为它提供了python接口(interface)。其他进程可以调用我的python包中的函数,而后者又通过Win32Com调用我需要的函数。

不幸的是,COM不允许我指定特定的COM进程,因此,无论我的服务器多么强大,我一次只能在计算机上控制一个Excel实例。如果我尝试运行多个excel实例,将无法确保python层绑定(bind)到特定的Excel实例。

我希望能够在Windows服务器上同时运行多个excel应用程序。有没有办法做到这一点?例如,是否可以对环境进行分区,以便我可以运行应用程序支持的任意数量的Excel _ Python组合?

最佳答案

不幸的是,我对Python一无所知,但是,如果它通过COM运作,则Excel并不是单实例应用程序,因此您应该能够在内存允许的情况下创建尽可能多的Excel实例。

使用C#,您可以通过以下方式创建多个Excel应用程序实例:

Excel.Application xlApp1 = new Excel.Application();
Excel.Application xlApp2 = new Excel.Application();
Excel.Application xlApp3 = new Excel.Application();

在C#中使用后期绑定(bind),您可以使用:
object objXL1 = Activator.CreateInstance(Type.GetTypeFromProgID("Excel.Application"));
object objXL2 = Activator.CreateInstance(Type.GetTypeFromProgID("Excel.Application"));
object objXL3 = Activator.CreateInstance(Type.GetTypeFromProgID("Excel.Application"));

如果使用VB.NET,VB6或VBA,则可以按以下方式使用CreateObject:
Dim objXL1 As Object = CreateObject("Excel.Application")
Dim objXL2 As Object = CreateObject("Excel.Application")
Dim objXL3 As Object = CreateObject("Excel.Application")

不幸的是,在Python中,我没有任何线索。但是,除非对Python有一些限制(我无法想象?),否则我会认为它是非常可行的。

就是说,让多个Excel实例充当某种类型的服务器来执行其他操作的想法听起来很有趣……我会谨慎地测试您正在做的事情,尤其是关于您可以在以下位置打开多少个实例一次而没有用完内存,如果Excel由于某种原因崩溃,调用程序会如何处理。

关于python - 通过COM独立控制2个单独的Excel实例...可以完成吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/516946/

10-14 16:23
查看更多