DBNull в непустой ячейке при чтении файла Excel через OleDB

Я использую 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\""
5
задан Dhwani 2 April 2014 в 10:06
поделиться

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.
6
ответ дан 14 December 2019 в 08:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: