即使在此字段中只有数字,也可以以stringforms读取Excel字段
我有一个Excel电子表格,其中包括一些标识符。
我的odbc阅读器应该返回给我一些类似“55201562000016”的东西,但是它经常返回给我一些类似“5.52016e + 008”的东西。
我只做了下面的事情,但显然不足以告诉读者它应该被视为一个string,而不是一个指数整数:
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()
它应该可以工作,但有时会抛出exception,因为有时数据是错误的(例如用字母)。 但我仍然需要取它。
任何想法 ?
谢谢
您可以使用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(); }
希望这可以帮助。
我想,下面的方法可以帮助你克服这个问题:
double converted=0; double.TryParse("5.52016e+008", out converted);
IIRC,Excel ODBC阅读器查看前八行以“推断”列的数据types。
第一行作为列标题,所以把文本放在第二行应该足以迫使它推断出一个string数据types。
一旦你完成了
rdrxls("entr_siren")
应该返回一个string,而不是任何一种数字。