尽管此字段中只有数字,但请将Excel字段作为字符串读取

时间:2010-09-16 10:13:25

标签: .net excel odbc

我有一个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 个答案:

答案 0 :(得分:1)

您可以使用Int64.TryParse()查看是否可以将结果转换为Int64。 TryParse()返回一个布尔值,指示强制转换是否成功。 如果失败,请将值保持原样,如果成功,则使用转换结果的ToString()覆盖先前存储的值。

double sirenValue;
double siretValue;

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


if (double.TryParse(siren, System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out sirenValue))
{
    siren = sirenValue.ToString();
}

if (double.TryParse(siret, System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out siretValue))
{
    siret = siretValue.ToString();
}

希望这有帮助。

答案 1 :(得分:0)

我认为,以下方式可以帮助您克服这个问题:

double converted=0;
double.TryParse("5.52016e+008", out converted);

答案 2 :(得分:0)

IIRC,Excel ODBC阅读器查看前八行以“推断”列的数据类型。

第一行被视为列标题,因此将文本放在第二行应该足以强制它推断字符串数据类型。

完成后

rdrxls("entr_siren")

应该返回一个字符串,而不是任何数字。