Я использую OleDB для чтения файла Excel. Один из столбцов имеет "Общий" формат и содержит и строки с буквами и значения, состоящие из чисел только. Строковые значения получены без проблемы, но чистые численные значения получены как DBNull
.
Как решить?
Я использую следующую строку подключения для открытия файла Excel 2003 (xls):
"Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=C:\\file.xls;
Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\""
Я нашел документацию на сайте Microsoft, которая применима к вашему сценарию. Они рекомендуют преобразовать все числовые значения в строки.
http://support.microsoft.com/kb/257819
Как говорилось ранее, ADO должен угадать тип данных для каждого столбца в рабочем листе или диапазоне Excel. (На это не влияют настройки форматирования ячеек Excel). Серьезная проблема может возникнуть, если в одном столбце числовые значения смешиваются с текстовыми. И Jet, и ODBC Provider возвращают данные большинства типов, но возвращают NULL (пустые) значения для меньшинства типов данных. Если в столбце оба типа перемешаны в равной степени, провайдер выбирает числовые значения вместо текстовых.
Например:
* In your eight (8) scanned rows, if the column contains five (5) numeric values and three (3) text values, the provider returns five (5) numbers and three (3) null values.
* In your eight (8) scanned rows, if the column contains three (3) numeric values and five (5) text values, the provider returns three (3) null values and five (5) text values.
* In your eight (8) scanned rows, if the column contains four (4) numeric values and four (4) text values, the provider returns four (4) numbers and four (4) null values.