我有一个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()
它应该工作,但有时会抛出异常,因为有时数据是错误的(例如用字母);但我还是需要拿它。
有什么想法吗?
由于
答案 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")
应该返回一个字符串,而不是任何数字。