Excel 办公室 易于修改

Excel 办公室 易于修改,excel,visual-studio-2005,interop,outlook,global-assembly-cache,Excel,Visual Studio 2005,Interop,Outlook,Global Assembly Cache,然而: 很难支持这个库 使用COM接口和后期绑定。VB.NET始终支持后期绑定。只需使用Marshal.GetActiveObject()并将变量的类型设置为Object。您可以创建一个执行此操作的VB.NET对象,并从C#调用它 使用C#时,如果使用反射API,则会延迟绑定,但使用此API编写代码非常痛苦。在C#4中,还可以通过动态类型获得后期绑定 如果这样做,则不需要分发任何Office程序集,只要Office API中对象的属性不变,代码就可以工作 后期绑定代码比早期绑定代码慢,但出于许

然而:

  • 很难支持这个库

使用COM接口和后期绑定。VB.NET始终支持后期绑定。只需使用Marshal.GetActiveObject()并将变量的类型设置为Object。您可以创建一个执行此操作的VB.NET对象,并从C#调用它

使用C#时,如果使用反射API,则会延迟绑定,但使用此API编写代码非常痛苦。在C#4中,还可以通过动态类型获得后期绑定

如果这样做,则不需要分发任何Office程序集,只要Office API中对象的属性不变,代码就可以工作


后期绑定代码比早期绑定代码慢,但出于许多目的,这不是问题。

您可能想看看NetOffice项目:

它是一个免费的(MIT许可证)和完整的(所有2000-2010版本和所有Office应用程序)版本独立互操作程序集。程序集是使用工具从实际PIA生成的,因此它们是正确的、完整的和最新的,并且可能会在将来的版本中快速更新

另一个很好的特性是每个成员的IntelliSense显示实现该成员的Office版本


对于部署,您可以在应用程序中复制或安装程序集。

感谢您的回复。到目前为止,我还没有遇到版本冲突问题——2003年和2007年的用户都能够很好地使用这些功能。我想更简单的问题是,我想知道的是,我是否可以让没有任何Office版本的用户安装我的应用程序,允许他们使用我的应用程序的非互操作功能?我知道他们必须有Outlook/Excel才能使用我的基于互操作的功能,但我的大多数应用程序与Office无关。我想,互操作代码的一个实例不会完全将你的应用程序限制在那些安装了Office的人身上。可以尝试的一件事是使用按需下载()--您应该能够编写代码,以便在调用/下载包含Office互操作类的程序集之前,检查Office是否已安装。我不知道的是ClickOnce是否会延迟检查依赖项,直到实际请求下载按需下载程序集,或者它是否会检查所有可能的依赖项。这看起来非常有趣。这是我第一次听说它;我得试一试,看看运气好不好。谢谢,如果这有助于解决我的问题,我会发回。Guy-使用MSDN上概述的技术使程序集“可选”并没有解决我的问题。我仍然得到一个错误,说我需要GAC中的程序集,不允许我安装应用程序。还有其他想法吗?在应用程序中使用一两次Office互操作会使任何人在未安装Microsoft Office的情况下都可以完全卸载该应用程序,这让我感到非常沮丧和困惑。