我们有一个使用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开发人员所以我可能会错过一些有关问题的相关信息。随意询问任何其他信息。
答案 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"格式化选项一起使用)解决了这个问题。