亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

oledb excel 某些日期列返回 null

oledb excel 某些日期列返回 null

C#
慕田峪9158850 2022-12-31 11:22:44
我正在通過 oledb 讀取 xlsx 文件。有些行的列(包含日期字符串)返回空值,有些行的列(也包含日期字符串)返回日期字符串。在 Excel 中,列類型設置為“日期”。這是我的連接字符串:$"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={PATH_TO_FILE};Extended Properties=\"Excel 12.0 Xml;HDR=NO\""這是查詢數據的命令文本:$"SELECT * FROM [SHEET_NAME$A4:BC] WHERE F1 IS NOT NULL"這是我從數據記錄中讀取數據的方式:var test = dataRecord.GetValue(dataRecord.GetOrdinal("F39"));以下是檢查員在測試包含日期字符串時向我展示的一些示例:{07.01.1975 00:00:00}{03.08.1987 00:00:00}{03.10.1988 00:00:00}{01.05.1969 00:00:00}{20.12.2016 00:00:00}{18.07.2011 00:00:00}在其他情況下,檢查員僅顯示:{}這是 xlsx 文檔的屏幕截圖,其中我在返回值為空的地方用紅色標記了一行,在返回實際日期字符串的地方用綠色標記了一行:日期字符串的格式如下dd.mm.yyyy為什么這些行返回一個空值而不是日期字符串?正如 AndyG 所建議的,我已經檢查了日期字符串值是否可能因格式的依賴而失敗(“dd.mm.yyyy”與“mm.dd.yyyy”)。但有些情況對“mm.dd.yyyy”無效但不會失敗。
查看完整描述

2 回答

?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

我無法解決問題,但能夠通過將 Excel 中的列類型更改為文本來繞過它。

我不得不復制整個 xls 文件,刪除副本的內容,將列類型設置為文本,從第一個文件復制內容并將其粘貼到第二個文件中。否則 Excel 會將日期字符串更改為用于存儲日期的數字。

現在我可以正確讀取單元格了。


查看完整回答
反對 回復 2022-12-31
?
慕虎7371278

TA貢獻1802條經驗 獲得超4個贊

兩年太晚了,但在經過幾個小時的大部分時間為此苦苦掙扎之后,我希望這可以幫助某人:

聽起來您的 Excel 文檔中的第一行可能包含列名而不是實際數據,這意味著它們屬于不同的 Excel 數據類型(常規/文本 + 日期時間)。

要處理的修復非常簡單 - 使用擴展屬性中的 HDR 屬性調整連接字符串以反映這一點:

$"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={PATH_TO_FILE};Extended Properties=\"Excel 12.0 Xml;HDR=YES\""

HDR = true 表示第一行包含字段名稱

您可以在這里閱讀更多相關信息: https ://www.connectionstrings.com/ace-oledb-12-0/

此外,如果您在文檔(如 OP)中的奇數行遇到此問題,請確保整個列的數據類型相同,但列標題除外(如果使用 HDR=true) Excel 有時會將 DateTime 字段翻轉為 General 字段,這會導致此問題行為


查看完整回答
反對 回復 2022-12-31
  • 2 回答
  • 0 關注
  • 148 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號