从StreamReader读取时如何跳过csv数据中的标题?

时间:2014-10-31 10:56:40

标签: c# csv

编辑:

我有以下代码:

private void button1_Click_1(object sender, EventArgs e)
{
    var date = new List<String>();
    var value = new List<Double>();

    string dir = @"C:\Main\test.csv";

    using (var reader = new System.IO.StreamReader(dir))
    {
         var lines = File.ReadLines(dir)
                        .Skip(1);//Ignore the first line

            foreach (var line in lines)
            {
                var fields = line.Split(new Char[] { ';' },   StringSplitOptions.RemoveEmptyEntries);
                date.Add(fields[0]);
                if (fields.Length > 1)
                    value.Add(Convert.ToDouble(fields[1]));
            }


    String[] _date = date.ToArray();
    Double[] _value = value.ToArray();


    chart1.Series["Test"].Points.DataBindXY(_date,_value);
    chart1.Series["Test"].ChartType = SeriesChartType.Spline;
  }
}

现在我想跳过csv数据的标题。这意味着第一列的第一行和第二列的第一行。怎么做?

标题是字符串。当没有头条新闻时,他会跳过第一行但是标题我会得到一个System.FormatException。

当第一行包含第一列中的Date而第二列中包含Value(使用texteditor打开)时,它会失败:

  

“日期”, “值”

     

“20.04.2010”; “82.6619508214314”

     

“21.04.2010”; “33.2262968571519”

     

“2010年4月22日”; “25.0174973120814”

2 个答案:

答案 0 :(得分:6)

为什么不首先阅读一行,不做任何事情?

using (var reader = new System.IO.StreamReader(dir))
{
    reader.ReadLine(); // skip first

    string line;
    while ((line = reader.ReadLine()) != null)
    {
    }
}

答案 1 :(得分:1)

在执行while循环之前添加一个reader.ReadLine()

using (var reader = new System.IO.StreamReader(dir))
{
    if (reader.ReadLine()) //read first line
    {
     string line;
     while ((line = reader.ReadLine()) != null) //read following lines
     {
     }
    }
}