2017-02-21 53 views
0

我已經在我的應用程序中編寫了Excel導入過程。我用來導入的Excel電子表格是我使用我編寫的導出過程創建的所有文件。Excel通過DataGridView訪問導入不顯示所有日期

查看DataGridView中的數據時,有一列顯示日期,該列顯示3行上的NULL值。這3行的日期是相同的 - 15/02/2017。

起初我以爲這是因爲電子表格中的日期是NULL,但它們不是。

經過Excel本身的一些調查後,我注意到列中的所有其他日期都設置爲'日期'類型,但這3個日期有問題的單元格設置爲'常規'。

但是,在我的導出程序中,我使用此代碼將此列中的單元格設置爲dd/MM/yyyy格式的日期。

Dim formatRange As Excel.Range 

formatRange = xlWorksheet.Range("C1", "C9999") 
formatRange.NumberFormat = "dd/MM/yyyy" 

formatRange = xlWorksheet.Range("D1", "D9999") 
formatRange.NumberFormat = "dd/MM/yyyy" 

然後,只是作爲一個實驗,我改變了問題小區的類型爲「日期」,並試圖再次進口 - 但它仍然顯示NULL細胞。

所以,我想我有兩個問題,真的;

  • 爲什麼導出不是首先將這些單元格設置爲dd/MM/yyyy日期?這與價值觀有關嗎?
  • 然後,即使在Excel中將類型更改爲「Date」後,爲什麼顯示爲NULL

這是一個常見問題,還是有什麼我做錯了?

+0

格式化Excel單元格爲'Date'類型是相當無意義的,因爲你仍然可以鍵入任何你想要的。由於沒有可用的代碼,所以我會仔細研究一下在excel中使用不良日期的可能性。 dd/MM/yyyy可能會與mm/dd/yyyy混在一起。只是猜測。 – JohnG

+0

@JohnG我確實考慮過它是否會讓它與MM/dd/yyyy混淆,但旁邊的列顯示14/03/2017完美,所以這種理論揭穿了這種理論 – David

+0

你有沒有考慮過格式化完全關閉?這應該顯示字符串,如果它爲null,那麼它最有可能與日期無關。 – JohnG

回答

0

答案是@TnTinMn指出的。

Extended Properties設置爲Extended Properties='Excel 12.0;IMEX=1;';會顯示問題日期,這些日期出於某種原因顯示爲字符串。不清楚爲什麼,因爲格式與其他格式相同,但不匹配的數據類型問題是圍繞使用這個小的改變而制定的。