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

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

有没有人有好的(即工作)在 VB.Net 或 C# 中执行类似操作的示例?

有帮助吗?

解决方案

不要这样做!

我们花了数周的时间试图让类似的东西发挥作用,但它根本没有像广告中那样运行。甚至不要开始——立即放弃!

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

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

  1. 速度非常快
  2. 该引擎与 UI 分离,因此您可以使用它在服务器端执行 Excel 操作(未安装 Office)
  3. 相当便宜
  4. 具有与现有 Excel COM api 类似的 API,因此移动代码相对容易

这完全取决于您电子表格中所需的公式。查看 Spreadsheet Gear 的公式列表,如果有匹配的就使用它。

其他提示

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

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

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

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

它们都是托管代码和直接 .NET 库。没有令人头疼的互操作问题。我自己没有使用过它,但我从金融界的人们那里听到了非常好的评价。

我们编写了一个控制 Excel 2003 的单个实例的服务。我们从未设法让 Excel 实例彻底关闭,因此我们在第一次访问服务时启动一个实例,并仅使用该实例,序列化客户端请求。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top