Excel无法识别带有DateTime参数的C#函数

时间:2014-09-29 18:27:48

标签: c# excel add-in excel-dna

我想用以下函数构建Excel插件:

[ExcelFunction()]
public static  double myAverage1(double[] inputVector)
{
    return inputVector.Sum()/inputVector.Length ;
}

[ExcelFunction()] 
public static double myAverage2(DateTime[] TS1_DateTime) 
{
    return 12.5;
}

问题是Excel无法识别功能 myAverage2

问题与DateTime类型有关,我试图将其更改为String类型,但该函数无法识别。知道如何解决这个问题吗?

我最终想要实现的是给函数两个DateTime数组并找回它们的交集。

1 个答案:

答案 0 :(得分:3)

根据this thread,Excel-DNA应该使用ToOADateFromOADate方法自动将DateTime值封送为double

我自己没有尝试过,但我的猜测是它没有设置为检测DateTime的数组或列表,而只设置DateTime个参数。

尝试将参数声明为double[],然后在函数中执行以下操作:

DateTime dt[] = values.Select(x => DateTime.FromOADate(x)).ToArray();

或者根据您的功能需求,单独为每个值调用FromOADate

尽管函数被声明为double[],但您仍然可以传递包含日期的单元格数组,因为Excel无论如何都希望将它们作为OLE自动化日期传递。