office是64位的,编程工具是Visual Studio 2019

  1. Create a new Class Library (.NET Framework) project in C#.
  2. Use the Manage NuGet Packages dialog or the Package Manager Console to install the Excel-DNA package:
PM> Install-Package ExcelDna.AddIn
  1. Add your code (C#):
using ExcelDna.Integration;

namespace ExcelDNA
{
    public static class MyFunctions
    {
        [ExcelFunction(Description = "My first .NET function", Category = "STRING")]
        public static string SayHello([ExcelArgument(Name = "TEXT", Description = "text to split")] string name)
        {
            return "Hello " + name;
        }
    }
}
  1. Compile, 在生成目录里会出现许多文件,生成目录下有4个xll文件,其中有一个是我们所用的:

    ExcelDNA-AddIn64.xll
    

    看名字应该用在64位office中。其他还不知到有什么用,放在那里,不管他。

  2. 打开Excel,加载步骤如下:

首先到信任中心把ExcelDNA-AddIn64.xll文件所在的目录添加:

trusted center > trusted locations > add new locations

开发工具,Excel加载项,浏览,选择生成目录的ExcelDNA-AddIn64.xll文件,可用加载宏,勾选。

如果开发工具选项卡不在功能区,选文件,选项,自定义功能区,主选项卡,开发工具,勾选。

清除多余的加载宏项目:删除加载宏项目对应的文件,勾选要清除的项目,会出现对话框,问是否清除加载宏项目,确认清除。

  1. load and use your function in Excel:

    =SayHello("World!")
    

当你在Excel手动输入函数时,函数名会出现在智能提示框中。

公式,插入函数,选择类别STRING,可以找到SayHello函数,并且有描述信息。

用到Excel类型,仍然可以引用程序集,扩展:

using Microsoft.Office.Interop;
using Excel = Microsoft.Office.Interop.Excel;

获得应用的方法:

var xlApp = (Application)ExcelDnaUtil.Application;

参考文献:

https://excel-dna.net/

https://jingyan.baidu.com/article/f71d6037c911351ab741d150.html