C# 使用C创建新的Excel函数(用户定义函数)#

C# 使用C创建新的Excel函数(用户定义函数)#,c#,excel,user-defined-functions,excel-dna,C#,Excel,User Defined Functions,Excel Dna,我想创建一个新的Excel函数(用户定义函数),为此,我执行了与此链接中相同的步骤: 我创建了一个类库项目 我安装了ExcelDna.Integration软件包 我创建了一个方法sayHello 但是当我试图从excel中的单元格调用我的函数时(我put=sayHello(“World”),函数没有出现,似乎它没有添加到excel函数中。 是否缺少一些步骤?如何使我的函数看起来能够使用它?您应该安装软件包“ExcelDna.AddIn”来制作外接程序(这将设置外接程序,包括重要的.dna文件,

我想创建一个新的Excel函数(用户定义函数),为此,我执行了与此链接中相同的步骤:

  • 我创建了一个类库项目

  • 我安装了ExcelDna.Integration软件包

  • 我创建了一个方法sayHello

  • 但是当我试图从excel中的单元格调用我的函数时(我put=sayHello(“World”),函数没有出现,似乎它没有添加到excel函数中。
    是否缺少一些步骤?如何使我的函数看起来能够使用它?

    您应该安装软件包“ExcelDna.AddIn”来制作外接程序(这将设置外接程序,包括重要的.dna文件,并引入“ExcelDna.Integration”参考库)

    因此,步骤如下:

    • 创建新的C#类库项目(针对.NET Framework而非.NET标准)
    • 安装
      ExcelDna.AddIn
      软件包
    • 添加一些代码,例如
    
    公共静态类函数
    {
    公共静态字符串SayHello(字符串名称){返回“Hello”+name;}
    }
    

    • 按F5在Excel中编译并加载加载项
    (请注意,在某些Excel安装中,项目的调试设置会在可执行路径中获得额外的%1-如果调试时出现错误,请从末尾删除此设置)


    对Excel DNA最好的支持是Google group at

    似乎需要做很多工作才能在Excel中添加自定义项。你能不能用VBA编写它?或者如果C#是你的首选语言,创建一个dll并在Excel中引用它project@Zac虽然使用VBA生成UDF更快,但如果您想在Visual Studio中使用C#或现代VB.NET编写代码,然后使用.NET库等,您需要一点像Excel DNA一样的胶水来将.NET运行时绑定到Excel。直接将C#dll引用到Excel中是非常严格的,并且会导致各种问题。我从来没有使用过外部加载项,所以可能是我对该主题缺乏知识。在这后面,我将看一看,也许非常感谢,我发现了这个教程:,它很神奇,一切都很好,这是一个显示消息的简单示例,现在我想让我的函数从数据库中提取数据,我创建了一个方法来实现这一点,但这次我的函数没有出现,我找不到问题,我的查询是ok@GtariAbir它是米格可能是您的函数不是静态的,或者参数类型不受支持。如果您仍然被卡住,请写入Google组。我的函数是静态的,但当我将其定义为公共时它不是公共的。我收到此错误“可访问性不一致:返回类型列表的可访问性不如方法“Class1.GetAbprice(DateTime)”如何才能将其声明为公共而不出现此错误?哦,我的类AbsProduct在我将其定义为公共时未声明为公共问题已得到解决,但当生成我的解决方案并尝试从excel中的单元格调用我的函数GetAbsPrice时,将显示一个窗口,其中显示以下消息“Initialization[error]方法未注册-不支持签名。抽象或泛型:Class1.GetAbpriceForNav“是否可以使用DNA将DataTable返回Excel?因为我将函数的结果类型从list更改为DataTable,并且始终收到相同的消息“Initialization[Error]方法未注册-不支持的签名,抽象或泛型:“Class1.GetAbpriceForNav”,当我更改为int或string时,它工作正常,excel dna是否支持list/dataTable之类的类型?如果不支持,我如何更改以从数据库中获取多行?