Exceldate列未正确读取
我正在从Excel中读取date列
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)));
我得到date值30/12/1899
有任何想法吗?
根据Microsoft规范 DateTime.FromOADate()
方法需要一个double
types参数,如下所示
public static DateTime FromOADate(double d)
和您的GetExcelCellValue()
方法不会返回一个double
types,所以错误。
在你的第二种情况下,你明确地把它double
,因此你不会有任何的错误。
你可以改变你的GetExcelCellValue
方法来返回一个可为空的double。
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; }