gpt4 book ai didi

c# - Excel 日期列未正确读取

转载 作者:太空宇宙 更新时间:2023-11-03 15:49:41 25 4
gpt4 key购买 nike

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

但是我得到一个错误,exception =

The best overloaded method match for 'System.DateTime.FromOADate(double)' has some invalid arguments"

当我使用

var x = DateTime.FromOADate(Convert.ToDouble(GetExcelCellValue(range, rowIndex, DateColumnNumber)));

我得到一个日期值 30/12/1899

有什么想法吗?

最佳答案

根据 Microsoft specification DateTime.FromOADate() 方法需要一个 double 类型的参数,如下所示

public static DateTime FromOADate(double d)

并且您的 GetExcelCellValue() 方法不返回 double 类型,因此错误。

在你的第二种情况下,你明确地将它转换为 double 并且你不会因此得到任何错误。

您可以更改 GetExcelCellValue 方法以返回可为 null 的 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;
}

关于c# - Excel 日期列未正确读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26449907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com