2016-12-09 37 views
-4

我试图读取.csv文件,但它抛出错误input string was not in correct format。这是我的.csv excel文件截图LINK抛出错误“输入字符串格式不正确”? C#Windows窗体

这里是

class DowStock 
{ 
    public string coName { get; set; } 
    public double coPrice { get; set; } 
    public double coChange { get; set; } 
    public decimal coChangePct { get; set; } 
    public long coVolume { get; set; } 
    public decimal coYTDchange { get; set; } 
} 

这里是表单代码

static DowStock SplitRow(string Row) { 
    DowStock rowResult = new DowStock(); 
    string[] splitRow = Row.Split(",".ToCharArray()); 
    rowResult.coName = splitRow[0]; 
    rowResult.coPrice = double.Parse(splitRow[1]); 
    rowResult.coChange = double.Parse(splitRow[2]); 
    rowResult.coChangePct = decimal.Parse(splitRow[3]); 
    rowResult.coVolume = long.Parse(splitRow[4]); 
    rowResult.coYTDchange = decimal.Parse(splitRow[5]); 
    return rowResult; 
} 
+0

'coVolume'是有''####逃脱.'也是'逗号',你解析为'长' – Mairaj

+0

你试过'Convert.ToString()'/'Convert.ToDouble()'...已经? 'splitRow'中的每个值都是正确的? – Essigwurst

+0

你能告诉我怎么解决这个问题。我会把'###'放在一些没有问题的数值上,数字之间用','表示什么是最好的数据类型? –

回答

0

正如你可以看到,一些列的是具有####这是无法转换为Double值和导致异常的最佳选项是TryParse,如果转换失败,它将为您提供该特定类型的最小值或默认值。所以,我想建议你使用double.TryParseInt64.TryParsedecimal.TryParse转换。

例如:让我们考虑rowResult.coPrice = double.Parse(splitRow[1]);获得这个值,我们可以使用如下:

double coPrice = 0.0; 
double.TryParse(splitRow[1], out coPrice); 
rowResult.coPrice = coPrice; 
// The value will be 0.0 if the input is not convertible or 
// else it will be populated with the required value 

这样你就可以从FormatException

+0

感谢您的回应,如果我使用'double.TryParse'那么它给我错误'双不包含定义的尝试解析' –

+0

我已更新我的答案与示例片段,请你看看 –

+0

我有正确的双'双'列,但现在它给了我'小数'错误。关于'小数'呢? –