У меня есть процесс, который с помощью OleDb считывает данные из файла Excel в DataSet. Все работало хорошо, пока я не начал видеть данные с ведущими нулями. Текст имеет формат «Общий» или «Текст».
Я установил IMEX = 1 в соединении OleDb, но все равно получаю нулевое значение в наборе данных для каждой записи с начальным 0.
Кто-нибудь знает способ, который РАБОТАЕТ?
Редактировать
В качестве дополнительной информации я ДОЛЖЕН оставить начальные 0, а столбец отформатирован как General. Я также пробовал Text.
Первая запись с нулем в начале находится в строке 11, и возвращается ноль. Все остальные данные на этом конкретном листе - это числа для этого столбца.





Готов поспорить, данные хранятся в электронной таблице Excel в виде текста; потому что изначально у него не было бы начальных нулей (хотя ячейки можно было бы отформатировать для их отображения). Я ожидаю, что OleDb спрашивает Excel, какой тип данных, а Excel считает, что это строки.
Посмотрите на одну из ячеек Excel и посмотрите, есть ли у нее нулевая загрузка в полосе ввода данных вверху; или у него есть начальный апостроф или что-то в этом роде?
Если это так (или даже если это не так, но вам нужны неформатированные данные), то одним из выходных для меня является копирование рабочего листа на другой рабочий лист и преобразование столбца Excel с помощью функции Val (адрес) и переформатируйте его без начальных нулей; затем прочтите это.
Я не могу удалить ведущий ноль. Данные показывают 0 как первый символ в ячейке, без апострофа.
Тогда как насчет добавления столбца и установки формулы в значение Val (badcolumn)?
Лучшее, что я вижу, это то, что вам нужно создать предварительно отформатированный файл Excel, а затем использовать его для данных, которые вам требуются.
Для столбца уже задан тип текста. Если мне не нужно удалить и повторно вставить данные.
Являются ли ваши первые 10 строк чистыми числовыми данными?
Затем драйвер делает вывод о том, что весь столбец является числовым. Он задыхается, когда сталкивается с данными, которые не подходят. Вероятно, вы видите это как NULL или 0.
Я бы попробовал:
1) скиньте IMEX - поэкспериментируйте без него
2) Попробуйте добавить одинарную кавычку в качестве первого символа ко всем данным в этом столбце.
Это «заставляет текст» в Excel. В качестве теста просто попробуйте его на первых 11 рядах.
Это должно заставить драйвер видеть столбец как текст. NULL должны исчезнуть.
Есть способ увеличить "размер выборки" строки ... но я не могу вспомнить ключевое слово для использования в строке подключения.
Если вы знаете, как изменить размер выборки в соединении, это было бы здорово. Единственные, которые я нашел, ссылаются на раздел реестра, и это НЕ будет работать для меня.
Excel и ведущие нули - огромная катастрофа