即使在此字段中只有数字,也可以以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,而不是任何一种数字。