Читайте поле Excel как строку, хотя в этом поле есть только цифры - PullRequest
1 голос
/ 16 сентября 2010

У меня есть таблица Excel с другими номерами, которые являются идентификаторами.
Мой читатель odbc должен вернуть мне что-то вроде '55201562000016', но слишком часто он возвращает мне что-то вроде '5.52016e + 008'.

Я делаю только следующее, но, видимо, недостаточно сказать читателю, что его следует рассматривать как строку, а не как экспоненциальное целое число:

siren = rdrxls("entr_siren").ToString().Trim()
siret = rdrxls("entr_siret").ToString().Trim()

Я пробовал это:

siren = Convert.ToInt64(rdrxls("entr_siren")).ToString().Trim()
siret = Convert.ToInt64(rdrxls("entr_siret")).ToString().Trim()

Должно работать, но иногда выдает исключения, потому что иногда данные ошибочны (например, с буквами); но мне все еще нужно получить его.

Есть идеи?

Спасибо

Ответы [ 3 ]

1 голос
/ 16 сентября 2010

Вы можете использовать Int64.TryParse(), чтобы посмотреть, можете ли вы привести результат в Int64.TryParse() возвращает логическое значение, указывающее, было ли приведение выполнено успешно или нет.Если это не удалось, сохраните значение как есть, если оно прошло успешно, перезапишите ранее сохраненное значение с помощью ToString () результата приведения.

0 голосов
/ 16 сентября 2010

IIRC, программа чтения ODBC в Excel просматривает первые восемь строк, чтобы «вывести» тип данных для столбцов.

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

Как только вы это сделаете

rdrxls("entr_siren")

должен возвращать строку, а не числовые значения.

0 голосов
/ 16 сентября 2010

Я думаю, что следующий способ может помочь вам преодолеть проблему:

double converted=0;
double.TryParse("5.52016e+008", out converted);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...