Я нашел некоторую документацию на веб-сайте Microsoft, которая относится к вашему сценарию. Они рекомендуют преобразовывать все числовые значения в строки.
http://support.microsoft.com/kb/257819
Как указывалось ранее, ADO должен угадать тип данных для каждого столбца в рабочей таблице или диапазоне Excel. (Это не зависит от настроек форматирования ячеек Excel.) Серьезная проблема может возникнуть, если в одном столбце смешаны числовые значения с текстовыми значениями. И Jet, и поставщик ODBC возвращают данные типа большинства, но возвращают значения 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.