我正在开发一个回归测试工具,它将验证大量Excel电子表格。目前,我使用pywin32产品的最新版本,通过Python脚本通过COM控制它们。不幸的是,COM似乎有一些恼人的缺点:
例如,最轻微的烦扰似乎能够中断到COM-Server的连接,一旦中断,似乎就没有安全的方法重新连接到Excel应用程序。COM应用程序对象中绝对没有内置的安全性。
Excel接口将不允许我安全地远程控制在同一个工作簿文件上操作的Excel应用程序的两个独立实例,即使它们是只读的。
而且当出了问题我很少收到有用的错误信息..。充其量,我可以除了一个数字错误代码或一个几乎没有用的消息,如“异常已经发生”。几乎不可能知道为什么出了什么问题。
最后,COM缺乏控制Excel一些最基本方面的能力?例如,无法保证只关闭COM客户端连接到的Excel进程。您甚至无法使用COM找到Excel的PID。
,那么如果我完全放弃COM呢?有其他方法来控制Excel吗?
我想做的就是运行宏,打开和关闭工作簿,读和写单元格范围?也许一些.NET专家知道一两个尚未进入Python社区的窍门?你的办公室黑客呢?有什么方法能比COM更好地获取Excel的内部呢?
发布于 2009-02-09 16:25:35
不可能完全绕过COM。您可以使用VSTO (),它在COM对象上有很好的.NET包装器,但在下面仍然是COM。
发布于 2009-02-13 15:57:15
Excel接口将不允许我安全地远程控制在同一个工作簿文件上操作的Excel应用程序的两个独立实例,即使它们是只读的。
这不是COM的限制,这是一个Excel的局限性。如果两个文件位于不同的目录中,Excel甚至不会允许您同时打开同名的两个文件。这是Excel程序的一个基本限制。
回答你的其他问题
如果检查python文档,如果连接丢失,应该有一种连接到现有服务器的方法。
缺少有用的错误消息可能与Python有关。
您甚至无法使用COM找到Excel的PID。
COM是一个内部对象模型,它公开了它想要的东西。PID与内部进程一样适用于外部进程,因此没有真正的理由公开COM接口。
发布于 2009-02-09 16:54:49
还可以将Excel作为服务器应用程序运行,并将其用作计算引擎。这允许非IT用户在Excel中指定业务规则,并通过them服务调用他们。我自己也没有用过这个,但我知道我的一个同事曾经用过这个。演练:使用Excel服务开发自定义应用程序可能是一个很好的起点。乍一看,该页面似乎需要Sharepoint。这可能不适合每一个环境。
https://stackoverflow.com/questions/528817
复制相似问题