我使用以下配置運行java程序以從excel文件中提取數據。其中一些列具有帶時間戳上下文的數據。「已解決」使用ODBC查詢Excel日期字段返回空值
- 平臺:Win 7(64)
- ODBC:Excel中(X32)[經由辦公室2010];要掃描的行數= 8
- Excel架構:「某些字段」,「日期字段1」,「日期字段2」,「日期字段3」,「其他字段」
- Excel中顯示的日期格式:dd/mm/YYYY HH:MM
- 爪哇1.6
- JDBC/ODBC驅動程序:在sun.jdbc.odbc.JdbcOdbcDriver
我嘗試以下(簡化的)查詢來提取數據:
SELECT [field 1], [date field 1], [date field 2] from [Sheet1$]
SELECT [field 1], [date field 1], [date field 2] from [Sheet1$] where [field 1] = "sample values"
我敢肯定,「日期字段2」中包含有效的日期值(但對於清空第20行) 和Java程序總是該列返回null。
所以,我的問題是,初始行的[date field 2]的空值是8行,會影響JDBC/ODBC的行爲嗎?如果是,如何避免它(沒有在excel文件中對數據進行排序)?
- 編輯 - 實際上,我問是否在前幾行(如8)中的該字段的空值將使驅動程序無法提取該列的值(即使後續行包含有效值)。我也困惑,如果它是特定於實現的驅動程序將簡單地拒絕提取該字段,爲所有條件返回null,甚至不嘗試將該列視爲字符串類型或返回空字符串(而不是NULL)
- 編輯 - 參照這個KB的信息:http://support.microsoft.com/kb/141284
在[日期字段2]的前幾排的空值將在所有條件下的ODBC驅動程序返回NULL。因此找到了根本原因,接下來要找到Excel文件的替代JDBC驅動程序。
謝謝。
你問是否JDBC可以處理空列(當然可以!)。還是你問如果你的代碼遇到null時應該如何迴應?還是你問完全其他的東西?請澄清。 – paulsm4