Добулд в непустой ячейке при чтении файла Excel через OLEDB

StackOverflow https://stackoverflow.com/questions/3206915

  •  13-09-2020
  •  | 
  •  

Вопрос

Я использую 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.) Серьезная проблема может возникнуть, если у вас есть числовые значения, смешанные с текстовыми значениями в одном столбце.Как самолет, так и поставщик ODBC возвращает данные типа большинства, но возвращают нулевые (пустые) значения для типа данных меньшинств.Если два типа одинаково смешаны в столбце, провайдер выбирает числовой текст.

Например:

* 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.
.

Другие советы

У меня такая же проблема, но со строчными значениями.Цифровые значения возвращаются, но строковые значения возвращаются как NULL.Я хочу загружать числовые значения в виде строковых значений.Столбец может содержать цифры и не цифровые коды (пример: 100344567 и prd001x01).

Драйвер Excel считает, что столбец имеет тип числовых, потому что значения в первых 8 рядах имеют числовую цифру.

Даже если я определяю клетки как текст (формата ячейки), он не работает.

Чтобы заставить драйвер «видеть» столбец как строка, которую я просто положил цитату перед числовым значением («100344567).Это превращает числовое значение в строку.

Это значение 8 строк определено в реестре HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Jet \ 4.0 \ Emsies \ Excel \ -> Typeguessrows= 8.

Я надеюсь, что это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top