我们有一个基于 Excel 2002/XP 的应用程序,它与 SQL 2000/5 交互以处理相当复杂的精算计算。该应用程序可以很好地执行其功能,但很难管理。
我们正在尝试创建一个“控制器”应用程序或服务,可以管理和监控这些 Excel 的各种实例(启动/停止/处理命令等),但不幸的是,这有点像 InterOp 的噩梦。
有没有人有一个在 VB.Net 或 C# 中做这样的事情的好(即工作)例子?
不要这样做!
我们尝试了数周来让类似的东西发挥作用,但它的表现并不像宣传的那样。甚至不要开始 - 立即放弃!
您真正拥有的唯一选择是基于重型服务器端 MOSS 的实现 - Excel (Web) 服务(他们称之为类似的东西)。基于 Windows 的 COM Excel 互操作几乎已死,将被 MOSS 取代。
另一种选择是使用 SpreadsheetGear。它实际上是一个很棒的产品
这完全取决于您在电子表格中需要的公式。查看 Spreadsheet Gear 的公式列表,如果有匹配项,那就去吧。
互操作工作正常,只是您总是引用未释放的 Excel 对象,因此 Excel 实例不会关闭。以下知识库文章解释了原因:
http://support.microsoft.com/default.aspx/kb/317109/EN-US/
如果您为一组有限的互操作场景编写了非常仔细的代码,则可以避免该问题。但在一般情况下,很难让它可靠地工作。
您可能想看看这个产品:http ://www.spreadsheetgear.com/products/spreadsheetgear.net.aspx
它都是托管代码和直接 .NET 库。没有 InterOp 头痛。我自己没有使用过它,但我从金融界的人那里听到了非常好的事情。
我们编写了一个服务来控制 Excel 2003 的单个实例。我们从来没有设法让 Excel 实例干净地关闭,所以我们在第一次访问该服务时启动一个实例,并且只使用它,序列化客户端请求。