Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将.net方法公开为Excel函数?_.net_Excel_Interop_Vsto - Fatal编程技术网

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

将.net方法公开为Excel函数?,.net,excel,interop,vsto,.net,Excel,Interop,Vsto,我在.NETDLL中有一套计算方法。我想让Excel(2003+)用户可以使用这些方法,以便他们可以在电子表格中使用它们 例如,我的.net方法: public double CalculateSomethingReallyComplex(double a, double b) {...} 我想让他们只需在随机单元格中键入公式即可调用此方法: =CalculateSomethingReallyComplex(A1, B1) 实现此目的的最佳方法是什么?有两种方法-您可以使用Visual St

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

例如,我的.net方法:

public double CalculateSomethingReallyComplex(double a, double b) {...}
我想让他们只需在随机单元格中键入公式即可调用此方法:

=CalculateSomethingReallyComplex(A1, B1)

实现此目的的最佳方法是什么?

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

或者您可以使用COM:


我不确定VSTO方法是否适用于旧版本的Excel,但COM方法应该可以正常工作。

您还应该看看ExcelDna()。ExcelDna是一个开源项目(也免费用于商业用途),允许您使用.Net创建本机.xll加载项。可以创建用户定义函数(UDF)和宏。外接程序代码可以位于包含VB、C或F代码的基于文本的脚本文件中,也可以位于managed.dll中

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