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

时间:2015-02-27 21:29:09

标签: c# excel excel-addins 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开发人员所以我可能会错过一些有关问题的相关信息。随意询问任何其他信息。

2 个答案:

答案 0 :(得分:0)

目前,Excel-DNA不会在Excel中注册此功能。 ' PARAMS'和'可选'被忽略,' string []'不受支持。

Excel-DNA(https://github.com/Excel-DNA/CustomRegistration)有一个扩展项目,我们正在为这些扩展类型和指令添加支持。

为简化起见,我建议您更换最后一个' params'带有一些' object'参数的参数,并在运行时测试它们 - 如果公式中没有出现,它们将作为ExcelMissing值传递。

答案 1 :(得分:0)

我能够解决这个问题。

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

删除此格式(使其与#34; general"格式化选项一起使用)解决了这个问题。

相关问题