将.net方法公开为Excel函数?

我有一套坐在.Net DLL中的计算方法。 我想使Excel(2003+)用户可以使用这些方法,以便他们可以在电子表格中使用这些方法。

例如,我的.net方法:

public double CalculateSomethingReallyComplex(double a, double b) {...} 

我想让他们只需在随机单元格中input公式即可调用此方法:

 =CalculateSomethingReallyComplex(A1, B1) 

什么是最好的方法来完成这个?

有两种方法 – 您可以使用Visual Studio Tools for Office(VSTO):

http://blogs.msdn.com/pstubbs/archive/2004/12/31/344964.aspx

或者你可以使用COM:

http://blogs.msdn.com/eric_carter/archive/2004/12/01/273127.aspx

我不知道如果VSTO方法可以在旧版本的Excel中工作,但COM方法应该可以正常工作。

你也应该看看ExcelDna( http://www.codeplex.com/exceldna )。 ExcelDna是一个开源项目(也可以免费用于商业用途),允许您使用.Net创build原生的.xll插件。 用户定义的函数(UDF)和macros都可以创build。 您的加载项代码可以是包含VB,C#或F#代码的文本脚本文件,也可以是托pipe的.dll文件。

由于使用了原生的Excel SDK接口,而不是基于COM的自动化,所以基于ExcelDna的加载项可以很容易地部署,不需要注册。 ExcelDna支持从Excel'97到Excel 2007的Excel版本,并支持Excel 2007数据types(大表和Unicodestring)以及Excel 2007下的multithreading重新计算。