Excel не распознает функцию C# с аргументами DateTime
Я хочу построить надстройку 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, но функция strill не распознается. Есть идеи, как решить эту проблему?
В конечном итоге я хочу дать функции два массива DateTime и вернуть их пересечение.
1 ответ
Согласно этой ветке, Excel-DNA должен автоматически маршалировать DateTime
значения как double
с помощью ToOADate
а также FromOADate
методы.
Я сам не пробовал, но думаю, что он не настроен на обнаружение массивов или списков DateTime
, но только один DateTime
параметры.
Попробуйте объявить параметр как double[]
и затем внутри функции сделайте что-то вроде:
DateTime dt[] = values.Select(x => DateTime.FromOADate(x)).ToArray();
Или просто позвоните FromOADate
на каждое значение индивидуально, в зависимости от потребностей вашей функции.
Несмотря на то, что функция объявлена как double[]
вы все равно сможете передавать массив ячеек, содержащих даты, так как Excel все равно пожелает передать их как даты автоматизации OLE.