国际格式化数字Excel导入数据分析错误

我正在导入一个Excel文件,我想将值添加到数据库。 在数据库中有一个十进制types(18,5),我想将我的值0.00204添加到该数据库中的列。 我的模型类中的variables是十进制types,我试着这个代码:

Convert.ToDecimal(items[7]); 

但后来我得到的错误,input如果不正确的格式。 项目的types是object []。 如何将值parsing为小数?

所有其他人工作得很好:

  product.packSize = Convert.ToInt32(items[3]); product.leadTime = Convert.ToString(items[4]); product.generalAccessoryCategoryId = Convert.ToInt32(items[5]); product.Company = Convert.ToString(items[6]); product.Weight = Convert.ToDecimal(items[7]); 

检查在任何阶段可能存在的错误情况,然后一旦安全,提取string:

 decimal result; if ((items!= null) && (items.Any()) && (items[7] != null) && (Decimal.TryParse(items[7].ToString(), out result)) product.Weight = result; 

经过几个意见和一些调查后,我认为这些项目[7]有转换不期望的字符。 我已经在上面更新了我的答案。

 decimal result; Decimal.TryParse("0a00204", out result); // Returns false 

编辑

如果你正在处理一个文化问题,你可以使用这个TryParse(Object, NumberStyles, IFormatProvider, out decimal)并包含你的文化(以en-GB为例):

 decimal.TryParse(items[7], NumberStyles.Any, CultureInfo.GetCultureInfo("en-GB"), out product.Weight); 

如果项目variables具有默认值,则可以使用TryParse ,如果可以parsing,则将replace该值,或者将其保留为默认值。 否则,可以使用TryParse的结果(如果成功则返回true,否则返回false),以确定是否需要设置该值。 例如:

 decimal.TryParse(items[7], out product.Weight) 

要么

 if(!decimal.TryParse(items[7], out product.Weight)) { product.Weight = (decimal)0; } 

它也可能有助于在数组中的对象上调用ToString()方法,因为parsing函数有时比parsing对象的String提交更麻烦。

 if(items != null && items[7] != null){ product.Weight = decimal.Parse(items[7].ToString()); }