从string转换为十进制消除了C#中的spl字符

下面是我用于读取开放式办公室电子表格数据和插入到数据库中的代码我有三个字段types的字段和四个小数types的列,所以我使用下面的代码将它们从第四列转换为小数

//newly added if (iCol > 2) { string value = ((XText)oSheet.getCellByPosition(iCol, iRow)).getString(); decimal vv = Convert.ToDecimal(value); drNew[i] = vv; i++; } else { drNew[i] = ((XText)oSheet.getCellByPosition(iCol, iRow)).getString();//old code i++;//old code } 

但问题是随着小数我有特殊的字符,如$和,如下所示

 $25,529.98 $1,61,800.52 $0.00 $7,252.80 

但以我的上面的代码插入发生如下所示

 25529.9800 161800.5200 0.0000 7252.8000 

我也试过下面的代码

  `if (iCol > 2) { string value = ((XText)oSheet.getCellByPosition(iCol, iRow)).getString(); if (Decimal.TryParse(value, out number)) { drNew[i] = value.ToString(); i++; } } 

`但是一点也没有进入条件

我如何插入数据,因为它与$。 并在数据库中。

我对此感到高兴:

 dt.Columns.Add("Payment", typeof(decimal)); 

这表明,您正在使用正确的types来存储您的数据。

但是, 如何存储一个值,你对这个问题有着深刻的误解。

无论您看到$25,529.9825529.9800只是格式化输出的问题。 存储的值是一个二进制位图,人类读者很难解释。 每当这样的值被呈现给你或通过你的应用程序,这将被转换 (= 格式化 )成一个人类可读的string 。 你应该很高兴,你的格式不存储在一起的价值!

这个格式问题是您的表示层/报表引擎应该做的最后一步。