2014-09-29 35 views
2

我要構建的Excel插件具有以下功能:Excel不能識別C#函數的DateTime參數

[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數組並返回這些交集。

回答

2

根據this thread,Excel的DNA應該自動編組DateTimedouble使用ToOADateFromOADate方法。

我還沒有自己嘗試過,但我的猜測是它沒有設置檢測數組或列表DateTime,但只有單個DateTime參數。

嘗試聲明參數爲double[],然後在函數內,這樣做:

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

,還是直接致電FromOADate每個單獨的值,取決於你的函數的需求。

儘管函數被聲明爲double[],但您仍然應該能夠傳遞包含日期的單元格數組,因爲Excel會希望將它們作爲OLE自動化日期傳遞。