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

Bjo*_*pen 6 .net excel interop vsto

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

例如,我的.net方法:

public double CalculateSomethingReallyComplex(double a, double b) {...}
Run Code Online (Sandbox Code Playgroud)

我想让他们只是通过在随机单元格中键入公式来调用此方法:

=CalculateSomethingReallyComplex(A1, B1)
Run Code Online (Sandbox Code Playgroud)

实现这一目标的最佳方法是什么?

Gov*_*ert 8

您还应该查看ExcelDna(http://www.codeplex.com/exceldna).ExcelDna是一个开源项目(也可以免费用于商业用途),允许您使用.Net创建本机.xll加载项.可以创建用户定义的函数(UDF)和宏.您的加载项代码可以在包含VB,C#或F#代码的基于文本的脚本文件中,也可以在托管的.dll中.

由于使用了本机Excel SDK接口,而不是基于COM的自动化,因此可以轻松部署基于ExcelDna的加载项,无需注册.ExcelDna支持从Excel '97到Excel 2007的Excel版本,并包括对Excel 2007数据类型(大表和Unicode字符串)的支持,以及Excel 2007下的多线程重新计算.


sam*_*son 3

有两种方法 - 您可以使用 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 方法应该可以正常工作。