我正在从Excel中读取日期列,因为
var y = DateTime.FromOADate(GetExcelCellValue(range, rowIndex, DateColumnNumber));
private dynamic GetExcelCellValue(Microsoft.Office.Interop.Excel.Range range, short? row, int col)
{
var cell = (range.Cells[row, col] as Microsoft.Office.Interop.Excel.Range);
return cell == null ? null : cell.Value2;
}
但我收到异常=
的错误最佳重载方法匹配 'System.DateTime.FromOADate(double)'有一些无效的参数“
当我用
时var x = DateTime.FromOADate(Convert.ToDouble(GetExcelCellValue(range, rowIndex, DateColumnNumber)));
我的日期值为30/12/1899
任何想法?
答案 0 :(得分:0)
每Microsoft specification DateTime.FromOADate()
种方法需要double
类型参数,如下所示
public static DateTime FromOADate(double d)
并且您的GetExcelCellValue()
方法未返回double
类型,因此错误。
在第二种情况下,您明确地将其投放到double
,因此您不会收到任何错误。
您可以更改GetExcelCellValue
方法以返回可以为空的双精度。
using Microsoft.Office.Interop.Excel;
private double? GetExcelCellValue(Range range, short? row, int col)
{
var cell = (range.Cells[row, col] as Range);
//using null coalescing operator.
return cell ?? cell.Value2;
}