2016-07-25 176 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