繁体   English   中英

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

[英]Date changed into number when i fetch value from excel

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

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

Excel值:2015年1月12日,在数据集中更改为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;
        }

就像在这个答案中解释的那样,它和使用一样简单:

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); 而且我认为从答案中提取出来会更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM