2016-07-25 174 views
0

我有一个c#应用程序,从MS Excel文件读取数据。 Excel单元格的格式是[$-10409]m-d-yyyy h:mm:ss AM/PM

enter image description here

我使用ExcelDataReader的NuGet读取Excel文件中的数据。

var file = new FileInfo(strFilePath); 
     using (var stream = new FileStream(strFilePath, FileMode.Open)) 
     { 
      IExcelDataReader reader = null; 
      if (file.Extension == ".xls") 
      { 
       reader = ExcelReaderFactory.CreateBinaryReader(stream); 

      } 
      else if (file.Extension == ".xlsx") 
      { 
       reader = ExcelReaderFactory.CreateOpenXmlReader(stream); 
      } 

      ds = reader.AsDataSet(); 
      dt = ds.Tables[0]; 
     } 

当我读取数据时,值被改变。例如7-1-2016 11:05:00 AM转换为42552.4618055556

有什么方法可以在阅读时获得正确的值吗?

+0

感谢@ Scroog1。它的工作:) – Sobhan

回答

0

您看到的双倍日期是自1900-01-01以来的天数。如果你拿42552.46/365=116.58

由于闰年确实存在,因此不建议使用此方法进行转换。您可以通过重新设置单元格:

  1. 突出显示单元格
  2. 单击单元格的格式
  3. 选择日期
  4. 选择日期格式可视化
+0

Excel文件(这是我的应用程序的输入)从其他应用程序(SSIS)生成。我无法重新格式化它。 – Sobhan