我使用以下配置运行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