【问题标题】:Throw error "Input string was not in correct format" ? C# Windows forms抛出错误“输入字符串的格式不正确”? C# Windows 窗体
【发布时间】:2016-12-09 05:45:49
【问题描述】:

我正在尝试读取 .csv 文件,但它抛出错误 input string was not in correct format。这是我的.csvexcel文件截图LINK

这是上课

 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; 
}

【问题讨论】:

  • coVolume####.Also comma 并且您将其解析为 long
  • 您尝试过Convert.ToString() / Convert.ToDouble() ... 已经? splitRow 中的每个值都是正确的?
  • 你能告诉我如何解决它吗?我将### 放置一些值没问题,, 在数字之间的最佳数据类型是什么?
  • 单步调试代码时调试器会告诉您什么?哪一行导致错误?引发异常时splitRow[index](无论它是什么元素)的值是多少?这是解决问题的基本信息,你应该学会自己解决这类问题。您还应该学习在此处和 Google 上搜索您在发布之前看到的错误消息;我在那边的 Related 列表中看到了 10 个类似的问题 ----->>>>>,这些问题在发布时会显示给您。您是否阅读了这些(以及此处的其他内容)以查看它们是否有帮助?

标签: c# winforms csv


【解决方案1】:

如您所见,某些列的 #### 不能转换为 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

【讨论】:

  • 感谢您的回复,如果我使用 double.TryParse 那么它给了我错误 double does not contain defination for try parse
  • 我已经用示例 sn-p 更新了我的答案,请您看一下
  • 我有正确的两个 double 列,但现在它在 decimal 上给了我错误。decimal 怎么样?
  • 你也可以试试decimal.TryParse
  • 嗨..现在它在gridview.thanks 中显示数据,但为什么0 主要是列? LINK
猜你喜欢
  • 2012-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多