Excel公开了COM API与C-API的区别

我正在使用ExcelDNA库,它似乎使用Excel的C-API和COM接口的组合。

这些接口在Excel实现方面有什么不同? 从Microsoft网站( https://msdn.microsoft.com/en-us/library/office/bb687829.aspx ):

自定义Excel用户界面

对于许多版本的Excel,C API并不是定制用户界面的最佳select。 VBA拥有Excel对象和事件的优越访问权限。 Excel 2007中引入的用户界面与早期版本在外观和底层技术上有很大的不同。 您可以使用托pipe代码资源来最好地自定义此接口。“

是什么让COM比C-API更适合编辑Excel的UI?

使用VBA或.NET而不是C或C ++编写用户界面的东西更容易,更快捷。

COM接口可以访问比C-API接口更丰富的Excel对象和事件集合,但是C-API是编写UDF的首选,因为它比COM执行得更好,允许multithreading,asynchronous,RTD, COM不提供的群集等。

请注意,使用来自ExcelDNA的COM意味着使用本质上慢的COM-INTEROP。

我同意查尔斯关于构build用户界面组件的简易性和较低的总拥有成本,并快速使用C#和Excel DNA(或Addin Express公平地)创build新function。

在宣称业绩至关重要之前,确定一些预期并测量所涉及的计算或事件。 如果有一个真正的性能敏感部分,将其隔离,然后编写托pipe的C ++代码,然后可以与用C#或VB.NET编写的用户界面集成。

另外,对Charles对Excel和VBA的评论只是一个小小的改动; 他们一起工作。 有几个例子可以在这里find:

  • VBA集成的ExcelDNA博客
  • 关于整合ExcelDNA和VBA的Mike Juniper博客