2

我们有一个基于 Excel 2002/XP 的应用程序,它与 SQL 2000/5 交互以处理相当复杂的精算计算。该应用程序可以很好地执行其功能,但很难管理。

我们正在尝试创建一个“控制器”应用程序或服务,可以管理和监控这些 Excel 的各种实例(启动/停止/处理命令等),但不幸的是,这有点像 InterOp 的噩梦。

有没有人有一个在 VB.Net 或 C# 中做这样的事情的好(即工作)例子?

4

4 回答 4

3

不要这样做!

我们尝试了数周来让类似的东西发挥作用,但它的表现并不像宣传的那样。甚至不要开始 - 立即放弃!

您真正拥有的唯一选择是基于重型服务器端 MOSS 的实现 - Excel (Web) 服务(他们称之为类似的东西)。基于 Windows 的 COM Excel 互操作几乎已死,将被 MOSS 取代。

另一种选择是使用 SpreadsheetGear。它实际上是一个很棒的产品

  1. 速度极快
  2. 该引擎与 UI 是分开的,因此您可以使用它来做 Excel 的东西服务器端(没有安装办公室)
  3. 相当便宜
  4. 有一个类似于现有 Excel COM api 的 API,因此移动代码相对容易

这完全取决于您在电子表格中需要的公式。查看 Spreadsheet Gear 的公式列表,如果有匹配项,那就去吧。

于 2008-09-18T08:01:33.403 回答
2

互操作工作正常,只是您总是引用未释放的 Excel 对象,因此 Excel 实例不会关闭。以下知识库文章解释了原因:

http://support.microsoft.com/default.aspx/kb/317109/EN-US/

如果您为一组有限的互操作场景编写了非常仔细的代码,则可以避免该问题。但在一般情况下,很难让它可靠地工作。

于 2008-09-26T22:05:23.180 回答
1

您可能想看看这个产品:http ://www.spreadsheetgear.com/products/spreadsheetgear.net.aspx

它都是托管代码和直接 .NET 库。没有 InterOp 头痛。我自己没有使用过它,但我从金融界的人那里听到了非常好的事情。

于 2008-09-18T01:24:12.033 回答
1

我们编写了一个服务来控制 Excel 2003 的单个实例。我们从来没有设法让 Excel 实例干净地关闭,所以我们在第一次访问该服务时启动一个实例,并且只使用它,序列化客户端请求。

于 2008-09-18T12:35:20.237 回答