在独立应用程序中使用VSTO访问Excel工作表

试图研究,但有时我似乎缺乏一些谷歌search技巧…

我想开发一个(独立的) WinForms应用程序 ,它使用自动化与Excel进行通信。 我已经知道如何使用Interop,但我认为VSTO工具将提供更加舒适或更复杂的方法来实现这一点。

我的想法是:

  • 我可以build立一个新的独立项目与Excel的参考准备。
  • 我可以使用VSTO提供的更复杂的对象模型来与Excel进行通信。

但是,到目前为止,我的发现使我认为:

  • VSTO只能用于构buildExcel的加载项/工作表, 而不能构build独立的应用程序
  • 没有比Interop提供的更复杂的对象模型(它具有诸如本地错误,“打开(丢失,丢失,丢失…”)等方法等丑陋的东西。
  • 我在VSTO命名空间中发现了一个Worksheet和一个Workbook类,但是据我所知,它们总是引用CS类来实现在定义Excel加载项或工作簿扩展时实现的工作表和工作簿。 – 它们不能在独立应用程序中用作舒适的包装。

任何人都可以证实这些陈述或纠正我在哪里我错了吗?

此外,如果应该有方法使用VSTO及其“工作簿”类从独立的应用程序加载Excel工作簿,那么我该怎么做?

Thx,chiccodoro

VSTO用于开发Office附件,而不是单独的应用程序。

为了从外部应用程序中自动执行Office,COM Interop仍然是实现它的方法。 如果您可以使用.NET 4.0(和Visual Studio 2010),那么您可以访问命名参数和可选参数 ,这使得Interop变得更加愉快。

例如,在.NET 3.5中,你可以这样写:

Workbooks.Open(thisFileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing) 

而在.NET 4.0中,你可以这样写:

 Workbooks.Open(thisFileName) 

我不相信你可以在外部应用程序中使用来自VSTO命名空间的对象。

与此同时,我又开始了解另一个让Office编程更加舒适的工具VSTO电动工具 。 虽然由VSTO团队构build,但它们也可以用于独立应用程序。 它们包含允许的扩展方法

 Workbooks.Open(thisFileName) 

尽pipe如此,他们仍然没有解决我迄今为止所遇到的几个问题

  • 本地化错误
  • 只要引用超出范围,就会正确释放所有COM对象。