簡體   English   中英

從基於excel的字符串的DATE導入結果為“字符串未被識別為有效的DateTime。”

[英]importing from excel's string based DATE results in “String was not recognized as a valid DateTime.”

專家需要幫助來解決這個瘋狂的問題:),並且相同的查詢已經在互聯網上流傳很久了。

順便說一句,我們有一個excel文件,並且將日期輸入到該excel文件中的用戶有時並不遵循良好做法。 例如。

方案1:(dd / mm / yyyy)

+---- Date ----+
+09/12/2014    +
+09/12/2014    +

方案2:(dd / mm / yyyy)[但在日期或月份區域中將缺少其他數字]

+---- Date ----+
+9/12/2014     +
+9/12/2014     +

方案2A:(dd / mm / yyyy)

+---- Date ----+
+9/1/2014      +
+9/1/2014      +

方案3:(mm / dd / yyyy)[與方案2和2A完全一樣]

+---- Date ----+
+12/9/2014     +
+12/9/2014     +

方案3A:(mm / dd / yyyy)

+---- Date ----+
+1/9/2014      +
+1/9/2014      +

方案4 :(日/月/日或年/月/日)

+---- Date ----+
+9/1/2014      +
+9/1/2014      +

現在,真正的問題是

  1. 我們將無法識別在excel文件中輸入的實際格式,即其mm / dd / yyyy或dd / mm / yyyy

  2. 盡管我們現在已經為excel文件格式設置了准則,但我們仍然擔心“人為錯誤”,我們希望在代碼中盡可能多地注意這一點。

  3. 到目前為止,關於日期的年份部分還沒有任何問題。 一直以來,我們每年都會獲得4位數字,但我們仍然希望盡可能多地進行排序。

經過大量研究,我們目前使用的是以下代碼

Convert.ToDateTime(DateTime.ParseExact(item["Excel_Date_Column_Name"].ToString(), "dd/mm/yyyy", System.Globalization.CultureInfo.InvariantCulture).ToString("mm/dd/yyyy"))

但是如前所述,如果輸入日期格式與閱讀格式不匹配,例如,我們會收到錯誤消息,

This format works
-----------------
Convert.ToDateTime(DateTime.ParseExact("13/12/2014", "dd/mm/yyyy", System.Globalization.CultureInfo.InvariantCulture).ToString("mm/dd/yyyy"))

This format will not work
-------------------------
Convert.ToDateTime(DateTime.ParseExact("13/12/2014", "mm/dd/yyyy", System.Globalization.CultureInfo.InvariantCulture).ToString("mm/dd/yyyy"))

我們還遇到了在excel文件中使用字符'的情況。

+---- Date ----+
+'9/1/2014     +
+'9/1/2014     +

是否有任何方法可以解決此問題,並嘗試制作一個通用解析器來消除上述問題,這對我們以及面臨類似問題的任何人都將真正有用。

這可能是由於Excel中的date列具有Date格式,且其區域設置與您的程序運行所使用的區域設置不匹配。

我不確定您是否可以檢測到給定單元格的語言環境,因為我不知道要在電子表格中讀取哪個庫。

最好的方法是使用yyyy-MM-dd日期格式,因為日期字符串中的日期/月份不會有歧義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM