Excel日期列未正确读取

时间:2014-10-19 11:15:08

标签: c# excel datetime

我正在从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

任何想法?

1 个答案:

答案 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;
}