我想用以下函数构建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数组并找回它们的交集。
答案 0 :(得分:3)
根据this thread,Excel-DNA应该使用ToOADate
和FromOADate
方法自动将DateTime
值封送为double
。
我自己没有尝试过,但我的猜测是它没有设置为检测DateTime
的数组或列表,而只设置DateTime
个参数。
尝试将参数声明为double[]
,然后在函数中执行以下操作:
DateTime dt[] = values.Select(x => DateTime.FromOADate(x)).ToArray();
或者根据您的功能需求,单独为每个值调用FromOADate
。
尽管函数被声明为double[]
,但您仍然可以传递包含日期的单元格数组,因为Excel无论如何都希望将它们作为OLE自动化日期传递。