Excel, OleDb и ведущие нули - PullRequest
0 голосов
/ 13 января 2009

У меня есть процесс, который использует OleDb для чтения данных из файла Excel в DataSet. Все работало хорошо, пока я не начал видеть данные с ведущими нулями. Текст форматируется как Общий или Текст.

Я установил IMEX = 1 в соединении OleDb, но я все еще получаю нулевое значение в наборе данных для каждой записи с начальным 0.

Кто-нибудь знает способ РАБОТАТЬ?

Редактировать

В качестве дополнительной информации я ДОЛЖЕН оставить первые 0, и столбец будет отформатирован как Общий. Я также пробовал текст.

Первая запись с начальным нулем находится в строке 11, и возвращается ноль. Все остальные данные на этом конкретном листе являются числами для этого столбца.

Ответы [ 3 ]

0 голосов
/ 13 января 2009

Лучшее, что я вижу, это то, что вы должны создать предварительно отформатированный файл Excel, а затем использовать его для данных, которые вам требуются.

0 голосов
/ 14 января 2009

Ваши первые 10 строк являются чисто числовыми данными?

Затем драйвер делает суждение, что весь столбец числовой. Он задыхается, когда сталкивается с данными, которые не подходят. Вы, вероятно, видите это как NULL или 0.

Я бы попробовал:
1) бросьте IMEX - экспериментируйте без него
2) Попробуйте добавить одинарную кавычку в качестве первого символа ко всем данным в этом столбце.
Это «заставляет текст» в Excel. В качестве теста просто попробуйте на первых 11 строках.
Это должно заставить драйвер видеть столбец как текст. NULL должны исчезнуть.

Есть некоторый способ увеличить строку "размер выборки" ... но я не могу вспомнить ключевое слово для использования в строке соединения.

0 голосов
/ 13 января 2009

Бьюсь об заклад, данные хранятся в таблице Excel в виде текста; потому что изначально он не имеет ведущих нулей (хотя ячейки могут быть отформатированы, чтобы показать их.) Я ожидаю, что OleDb спрашивает Excel, какой тип данных, и Excel считает, что они являются строками.

Посмотрите на одну из ячеек Excel и посмотрите, есть ли у нее ноль загрузки в полосе ввода данных вверху; или у него есть ведущий апостроф или что-то подобное?

Если это так (или даже если это не так, но вы хотите неформатированные данные), одним из способов избежать этого будет скопировать лист на другой лист и преобразовать столбец Excel с помощью Val (адрес) функционировать и переформатировать его без начальных нулей; затем прочитайте из этого.

...