2013-05-23 1 views
4

Я пытаюсь импортировать некоторые данные для работы из файла Excel, но у меня возникают проблемы с численными значениями ячеек. У меня есть несколько столбцов, которые будут иметь значения, где некоторые из них являются числовыми, тогда как другие значения могут быть комбинацией числовых и не числовых значений (без специальных символов, только буквы A-Z). Для извлечения данных в наборе записи, я делаю следующееExcel В ADO RecordSet есть пустые значения для числовых ячеек

Set oconn = New ADODB.connection 
oconn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & excelFile & ";" & "Extended Properties=""Excel 8.0;HDR=YES;""" 

    sTableName = "[sheet1$]" 
    sTableName = "select * from " & sTableName 

    Set oRs = New ADODB.Recordset 
    oRs.Open sTableName, oconn, adOpenStatic, adLockOptimistic 

Когда я читаю значение набора записей, хотя, числовые значения отображаются как пусты в колонках, где данные находятся в смешанном формате. Есть ли способ заставить набор записей просто читать все значения в виде текста или альтернативный способ чтения файла Excel, чтобы избежать этой проблемы?

+1

У меня была аналогичная проблема, но в обратном порядке, где цифры отображались нормально, но альфах нет. После добавления '; IMEX = 1' в расширенные свойства он работал нормально. "ИМЭКС = 1;" означает всегда читать столбцы смешанных данных в виде текста. –

+0

Большое вам спасибо, это именно то, что мне нужно. Если вы хотите опубликовать это как ответ, я отмечу его как ответ на вопрос – gdawgrancid

ответ

3

У меня была аналогичная проблема, но в обратном порядке, где цифры появились нормально, но альфах не было. После добавления

;IMEX=1

на расширенные свойства, он работал отлично.

IMEX=1 означает, что всегда следует читать столбцы смешанных данных как текст.

1

Если вы можете в дальнейшем исключить его, самый простой способ преодолеть это - всегда задавать первые восемь строк ваших данных желаемому типу. Несмотря на возможность указывать «строки для сканирования» в ODBC, оказывается, что он всегда сканирует первые 8 строк. Если вы можете позволить себе иметь некоторые фиктивные данные наверху (это позже исключается с помощью поворота и т. Д.), Это хорошо работает! Вы можете увидеть ссылку Microsoft здесь: https://support.microsoft.com/en-us/kb/141284