C# 从字符串到十进制的转换消除了c中的spl字符#
下面是我用来读取open office电子表格数据并插入数据库的代码我有三列字符串类型和四列小数类型,所以我使用下面的代码将它们从第四列转换为小数C# 从字符串到十进制的转换消除了c中的spl字符#,c#,asp.net,sql-server,excel,C#,Asp.net,Sql Server,Excel,下面是我用来读取open office电子表格数据并插入数据库的代码我有三列字符串类型和四列小数类型,所以我使用下面的代码将它们从第四列转换为小数 //newly added if (iCol > 2) { string value = ((XText)oSheet.getCellByPosition(iCol, iRow)).getString(); decimal vv = Convert.ToDecimal(value); drNew[
//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
}
`if (iCol > 2)
{
string value = ((XText)oSheet.getCellByPosition(iCol, iRow)).getString();
if (Decimal.TryParse(value, out number))
{
drNew[i] = value.ToString(); i++;
}
}
但问题是,除了十进制之外,我还有一些特殊字符,如$和,如下所示
$25,529.98
$1,61,800.52
$0.00
$7,252.80
但在我上面的代码中,插入操作如下所示
25529.9800
161800.5200
0.0000
7252.8000
我也试过下面的代码
//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
}
`if (iCol > 2)
{
string value = ((XText)oSheet.getCellByPosition(iCol, iRow)).getString();
if (Decimal.TryParse(value, out number))
{
drNew[i] = value.ToString(); i++;
}
}
`但它根本没有进入if状态
如何使用$插入数据。在数据库中。我对此感到高兴:
dt.Columns.Add("Payment", typeof(decimal));
这表明您正在使用正确的类型来存储数据
但是您对值的存储方式有着深刻的误解
无论您看到的是$25529.98
还是25529.9800
,都只是格式化输出的问题。存储的值是二进制位图,人类读者几乎无法解释。无论何时向您或通过您的应用程序显示此类值,都会将其转换(=格式化)为人类可读的字符串。您应该很高兴,您的格式没有与值一起存储
此格式问题是您的演示层/报告引擎应该做的最后一步。是!你应该为此感到高兴!您使用的是哪个版本的SQL Server?@abc我不明白这个。。。我的建议:编辑你的问题,减少它!(一个或两个例子就足够了),将代码简化为要点。我认为,您对数字/十进制值及其文本表示有误解…@abc看起来,当您试图将Excel单元格中的字符串值解析为十进制时,您会遇到困难。您可以选择,或者将值读取为数字,或者使用Excel的功能将字符串转换为适当的类型。您可以在值之外添加一个不可见的列,在该列中,您可以使用Excel公式将文本转换为实际值。@abc检查链接。TryParse有第三个参数。请尝试指定格式。@abc这个问题解决了吗?你需要进一步的帮助吗?请允许我一个提示:如果这个问题得到解决,您将非常感谢,在(最佳)答案的投票柜台下方勾选接受检查。这将1)将此问题标记为已解决2)使追随者更容易找到最佳解决方案3)向回答者支付积分,4)向您支付积分。一旦你自己越过了15点的边界,你会被要求对捐款进行投票。这就是说谢谢的方式。快乐编码!