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