c#csvfile到数组

时间:2016-07-04 10:06:47

标签: c# csv toarray

我有一个 .csv 文件包含许多行和3列(用';'分隔)和数字,我将其转换为double array[][] 现在我添加了更多数字列并收到错误:

  

FormatException - >输入字符串的格式不正确

我找不到什么错误,因为文件是相同的(但是还有2列) 我的代码:

OpenFileDialog fD = new OpenFileDialog();
fD.Title = "select";
fD.Filter = "csv files|*.csv";
fD.InitialDirectory = @"path here";
if (fD.ShowDialog() == DialogResult.OK)
    MessageBox.Show(fD.FileName.ToString());

double[][] termom = File.ReadLines(fD.FileName)
    .Select(l => l.Split(';')
        .Select(n => double.Parse(n))
        .ToArray())
    .ToArray();

编辑 感谢您提供编辑方面的帮助 - 这里不太习惯于命令。希望我添加正确的文件 original improved

1 个答案:

答案 0 :(得分:3)

您的文件res1.csv(假设它只包含double个值)有一些语法错误,例如

  

1881081,9; 6,315177; 352,499964;的 01,06,1974 ; 350645

01,06,1974的含义是什么?我们应该忽略逗号(将它们视为某种千位分隔符)?或者它是日期1 June 1974)?另一种可能性是,派生者,因此我们有三个单独的值:16和{{1 }}

如果你想忽略逗号(因此 01,06,1974 1061974.0 ),只需指定{{1}解析时:

1974

如果您想将InvariantCulture视为派生者(因此 01,06,1974 [1.0,6.0,1974.0]

double[][] termom = File.ReadLines(fD.FileName)
  .Select(l => l.Split(';')
    .Select(n => double.Parse(n, CultureInfo.InvariantCulture))
    .ToArray())
  .ToArray();