com互操作:如何从Excel或Access中使用c#

我在网上看到很多关于VSTO和从c#自动执行excel的知识,但是很less有人开始将ac#程序集连接起来,使它可以从Excel中看到。

有人可以指向我一些非常基本的信息解释如何创build一个COM接口,GUIDS,ComVisible等?

基本上所有你需要做的是

  1. 使用项目属性“组件版本信息”对话框中的相应属性使组件COM可见
  2. 对于每个公共类,添加类定义上面的代码的以下块(参见[1])
  3. 使用.NET 2安装文件夹中的regasm.exe工具注册DLL

此外,请确保在程序集版本信息对话框中添加一个描述性的名称到应用程序名称和描述(它们稍后用于selectCOM类)。

[1]在类定义之前添加的代码块:

 [ClassInterface(ClassInterfaceType.AutoDual)] [ProgId("SomeNameHere")] [ComVisible(true)] [Guid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx")] 

之后,你应该能够像其他普通的COM类一样使用这个类。

编辑
应该指出的是,我没有使用Excel和C#COM类的经验 – 我正在使用C#和Microsoft Navision一起工作,这很好用我上面描述的方式。

那里有很多书可能会让你去。 Wrox的“Pro C#2008”在这方面有很好的一章。

另外,这里是关于COM可见到Excel的MSDN博客文章。

而不是走下去的COM路线,它是相当容易(而不是安装问题)使用ExcelDNA的东西。 它允许您在.Net中编写不需要注册的XLL。 它也是开源的,很好的社区支持。