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博客