C# 在独立应用程序中使用VSTO访问Excel工作表
我试着研究这个问题,但有时我似乎缺乏一些谷歌搜索技巧 我想开发一个(独立的)WinForms应用程序,它使用自动化与Excel进行通信。我已经知道如何使用互操作,但我认为VSTO工具将提供一种更舒适或更复杂的方法 我的想法是:C# 在独立应用程序中使用VSTO访问Excel工作表,c#,.net,excel,interop,vsto,C#,.net,Excel,Interop,Vsto,我试着研究这个问题,但有时我似乎缺乏一些谷歌搜索技巧 我想开发一个(独立的)WinForms应用程序,它使用自动化与Excel进行通信。我已经知道如何使用互操作,但我认为VSTO工具将提供一种更舒适或更复杂的方法 我的想法是: 我可以用准备好的excel参考构建一个新的独立项目 我可以使用VSTO提供的更复杂的对象模型与Excel进行通信 然而,到目前为止,我的发现让我想到: VSTO只能用于为Excel生成加载项/工作表,不能用于构建独立应用程序 没有比Interop提供的对象模型更复杂
- 我可以用准备好的excel参考构建一个新的独立项目
- 我可以使用VSTO提供的更复杂的对象模型与Excel进行通信
- VSTO只能用于为Excel生成加载项/工作表,不能用于构建独立应用程序
- 没有比Interop提供的对象模型更复杂的对象模型了(它有一些丑陋的东西,比如区域设置错误、“Open”(Missing,Missing,Missing…)方法等等)
- 我在VSTO命名空间中找到了一个工作表和工作簿类,但据我所知,它们总是指在定义Excel加载项或工作簿扩展时实现的工作表和工作簿的CS类。-它们不能在独立应用程序中用作舒适的包装器
chiccodoroVSTO用于开发Office附加组件,而不是单独的应用程序 要从外部应用程序自动化Office,COM互操作仍然是一种方法。如果您可以使用.NET 4.0(和Visual Studio 2010),则可以访问,这使互操作变得更加愉快 例如,在.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)
Workbooks.Open(thisFileName)
在.NET 4.0中,您可以编写以下内容:
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)
Workbooks.Open(thisFileName)
我不相信您可以在外部应用程序中使用VSTO命名空间中的对象。与此同时,我了解了另一个使Office编程更舒适的工具集:VSTO Power Tools。虽然由VSTO团队构建,但它们也可用于独立应用程序。它们包含允许>
Workbooks.Open(thisFileName)
但它们仍然不能解决我目前遇到的几个问题,例如:
- 一旦所有COM对象的引用超出范围,立即正确释放它们