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



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

这个应用程序运行良好,直到我们将可选参数添加到我们的一个函数中(我真的不知道这个问题是否与可选参数有关,在发现这个问题之前,我们已经进行了其他更改)。

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

[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"one_answers"optional"被忽略,不支持"string[]"。

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

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

我解决了这个问题。

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

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

最新更新