«Разрешенные» поля даты запроса Excel с использованием ODBC return null

Я использую следующую конфигурацию для запуска java-программы для извлечения данных из файла excel. Некоторые из этих столбцов имеют данные с контекстом временной метки.

  • Платформа: Win 7 (x64)
  • ODBC: Excel (x32) [через Office 2010]; строки для сканирования = 8
  • Схема Excel: «некоторые поля», «поле даты 1», «поле даты 2», «поле даты 3», «другие поля»,
  • Формат даты, показанный в формате excel: dd / mm / yyyy HH: MM
  • 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-программа всегда возвращает значение null для этого столбца.

Итак, мой вопрос в том, будет ли пустым значением [поле даты 2] исходных строк, говорит 8 строк, влияет на поведение JDBC / ODBC? Если да, как его избежать (без сортировки данных в файле excel)?

– Изменить – На самом деле, я спрашиваю, будут ли пустые значения этого поля в первых нескольких строках (например, 8) заставить драйвер не извлечь значение этого столбца (даже если последующие строки содержат допустимое значение). Я также смущен, если это специфично для реализации, что драйвер просто откажется извлечь это поле, возвращая значение null для всех условий и даже не попытаться обработать столбец как строку или вернуть пустую строку (вместо NULL)

– Изменить – ссылаясь на информацию в этом KB: http://support.microsoft.com/kb/141284

Пустое значение первых нескольких строк в [поле даты 2] заставит драйвер ODBC возвращать NULL при любых условиях. Итак, основная причина найдена, и что дальше – найти альтернативный драйвер JDBC для файлов Excel.

Благодарю.

Драйвер Excel ODBC неправильно идентифицирует столбец как столбец даты, если первые 8 строк пустые, поэтому попытка получить значение даты для всех остальных строк не будет успешной. Нет никакого способа обойти это, это не проблема, связанная с Java.

Я не очень хорошо знаком с JDBC, но если вы вызываете метод для возврата значения даты для этого поля, попробуйте вызвать метод, чтобы вытащить значение строки, а затем проанализировать строку самостоятельно в значение даты (если это doesn ' t, вызовите метод, возвращающий значение с плавающей запятой, так как именно так хранятся даты Excel).

Или гораздо лучше решить НЕ использовать драйвер ODBC Excel (который, как известно, багги и ограничен), и вместо этого использовать Apache POI-библиотеку, которая может читать файлы Excel изначально. Вы теряете синтаксический сахар запросов, но простой цикл через активные строки, чтобы найти ваши данные, сделает трюк.

  • Excel - Microsoft Query - вход в SQL Server - настройка «Использовать доверенное соединение» по умолчанию
  • Excel 2007 - 1004 Ошибка времени выполнения Обновить таблицу запросов
  • Как запросить лист Excel с периодом в имени столбца
  • Будет ли моя команда подключаться к ODBC, если инструмент Excel, подключенный к Azure, будет сохранен на OneDrive?
  • Использование Excel в качестве базы данных ODBC
  • Подключение ODBC к SQL Server 2008 через VPN-отказ
  • Текстовый файл со столбцом в базу данных odbc
  • Открыть файл Excel, запрашивающий базу данных
  • Excel ODBC на 64-бит - снова
  • Обновление таблицы после перехода параметра к запросу, обновление ODBC
  • База данных MS Access требует более новой версии
  • Давайте будем гением компьютера.