当我从 excel 获取值时,日期更改为数字

本文关键字:日期 数字 excel 获取 | 更新日期: 2023-09-27 18:36:16

我有一个包含很多字段的 excel 文件。我使用数据集来存储从此 excel 文件获取的数据。在 excel 工作表中,我有一个设置为正确格式的日期列。但是当检索到时,格式会更改为数据集中的数字。

我不知道这个问题的原因。

Excel 值:01/12/2015,在数据集中更改为 42016。

任何关于这个问题的指示将不胜感激。

我的代码是

  private static DataSet GetExcelDataAsDataSet(string path)
        {
            return GetExcelDataReader(path).AsDataSet();
        }
        private static IExcelDataReader GetExcelDataReader(string path)
        {
            FileStream stream = System.IO.File.Open(path, FileMode.Open, FileAccess.Read);

            IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
            var data = excelReader.ResultsCount;
            DataSet result = excelReader.AsDataSet();

            excelReader.IsFirstRowAsColumnNames = true;
            return excelReader;
        }

当我从 excel 获取值时,日期更改为数字

正如这个答案中所解释的,它就像使用一样简单:

public static DateTime FromExcelSerialDate(int SerialDate)
{
    if (SerialDate > 59) SerialDate -= 1; //Excel/Lotus 2/29/1900 bug   
    return new DateTime(1899, 12, 31).AddDays(SerialDate);
}

您得到的数字是自 1900 年 1 月 1 日以来经过的天数,因此该函数是您的答案:)

您也可以使用DateTime dt = DateTime.FromOADate(NUMBER);,我认为从这个答案中提取它会更好地工作。