Excel DNA 函数在参数更改后停止工作

Excel DNA Function stops working after parameter change

我们有一个使用 C# 和 Excel DNA 运行的工作应用程序来创建在远程位置(使用 RTD 服务器)访问 Java Web 服务的函数。

在我们向我们的函数之一添加可选参数之前,此应用程序运行良好(我真的不知道问题是否与可选参数有关,我们进行了其他更改,直到确定此问题)。

我有类似下面的代码(不幸的是我不得不更改函数和参数名称):

[ExcelFunction(Description = "XXXXX", Name = "FUNCTION", IsVolatile = true)]
        public static object[,] Function(
            [ExcelArgument(Description = "XXXX", Name = "paramA")]
            string paramA,
            [ExcelArgument(Description = "XXXX", Name = "paramB")]
            string paramB,
            [ExcelArgument(Description = "XXXX", Name = "paramC")]
            string paramC,
            [ExcelArgument(Description = "XXXX", Name = "optional")]
            params string[] optional)
{
...
}

我第一次调用此函数时,它总是在第一次运行。但是,如果我更改参数值中的任何内容,它就会停止工作。发生了什么?调用该函数的字符串简单地变成了一个字符串。

=FUNCTION("aaa";"bbb";"ccc") 

在单元格值处。

有人知道如何避免这种行为吗?我不是经验丰富的办公室,甚至不是 .Net 开发人员,所以我可能会错过有关该问题的一些相关信息。欢迎询问任何其他信息。

按照目前的情况,Excel-DNA 不会向 Excel 注册此功能。 'params'和'optional'被忽略,不支持'string[]'。

有一个 Excel-DNA (https://github.com/Excel-DNA/CustomRegistration) 的扩展项目,我们在其中添加了对此类扩展类型和指令的支持。

为了简化操作,我建议您将最后一个 'params' 参数替换为几个 'object' 类型的参数,并在运行时测试每个参数 - 它们将作为 Excel 传递如果没有出现在公式中则缺少值。

我能够解决问题。

问题是我正在格式化将函数写入文本的单元格。在这种情况下,excel 不会将等号 (=) 解释为表达式的语句。

删除此格式(使其与 "general" 格式选项一起使用)解决了该问题。