Я использую следующую конфигурацию для запуска Java-программы для извлечения данных из файла Excel. Некоторые из этих столбцов содержат данные с контекстом отметки времени.
- Платформа: Win 7 (x64)
- ODBC: Excel (x32) [через Office 2010]; строки для сканирования = 8
- Схема Excel: «некоторые поля», «поле даты 1», «поле даты 2», «поле даты 3», «другие поля»
- Формат даты в Excel: дд / мм / гггг ЧЧ: ММ
- Java 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-программа всегда возвращает ноль для этого столбца.
Итак, мой вопрос, повлияет ли пустое значение [поле даты 2] исходных строк, скажем, 8 строк, на поведение JDBC / ODBC? Если да, как этого избежать (без сортировки данных в файле excel)?
- Правка -
На самом деле, я спрашиваю, не приведет ли драйвер из-за пустых значений этого поля в первых нескольких строках (скажем, 8) к извлечению значения этого столбца (даже если последующие строки содержат допустимое значение). Я также сбит с толку, если это зависит от реализации, что драйвер просто откажется извлечь это поле, возвращая ноль для всех условий, и даже не пытаться обрабатывать столбец как строковый тип или возвращать пустую строку (вместо NULL)
- Правка -
Ссылаясь на информацию в этом КБ: http://support.microsoft.com/kb/141284
Пустое значение первых нескольких строк в [поле даты 2] заставит драйвер ODBC вернуть NULL при любых условиях. Таким образом, основная причина найдена, и что дальше - найти альтернативный драйвер JDBC для файлов Excel.
Спасибо.