使用C#创建新的Excel公式/函数

Wal*_*ams 5 c# excel vba add-in excel-vba visual-studio-2013

我们希望能够以编程方式创建一个Excel工作簿,该工作簿将从单元格中调用自定义代码.单元格看起来像:

=MyCode(A1:A10)
Run Code Online (Sandbox Code Playgroud)

我的第一个想法是使用VBA,但由于该算法是专有的,因此希望它受到保护.我可以在上面输入一个密码,但是有关如何绕过这些密码的详细记录(在StackOverflow上).

我的第二个想法是在Visual Studio中创建一个Excel 2013 Workbook项目,但我没有找到任何有关如何在C#中公开函数的有用信息,因此可以像我描述的那样调用它.

接下来我想到让VBA调用C#,并在https://msdn.microsoft.com/en-us/library/bb608613.aspx上找到说明.我按照这些说明操作,但当我尝试运行VBA代码时,我得到了GetManagedClass函数的错误:不支持对象库功能.

关于如何做这样的事情有什么好的参考吗?

Gov*_*ert 6

您正在寻找Excel-DNA。这个开源库允许您创建托管 Excel 加载项,并支持创建用户定义的函数、宏、实时 RTD 数据源等。

在 C# 中创建 Excel UDF 就像这样简单:

[ExcelFunction(Description = "My first .NET function")]
public static string SayHello(string name)
{
    return "Hello " + name;
}
Run Code Online (Sandbox Code Playgroud)

你可以从一个单元格调用:

=SayHello("Walter")
Run Code Online (Sandbox Code Playgroud)

对于 .NET 的代码保护,您需要使用混淆器 - 有多种免费和付费的可用。