C#从CSV文件中

时间:2017-04-09 14:48:27

标签: c# csv

就C#而言,我是一个完整的新手,我正在尝试制作一个使用csv文件作为源数据的程序。

这是我的代码的一部分:

using (var sr = new StreamReader(fileInput))

while ((line = sr.ReadLine()) != null)
      {
      if (line.Contains(mK)) // <---Variable inputted by the user
        {
          Console.WriteLine(""+line);
          myValue = File.ReadAllLines(fileInput).Skip(1).First().Split(',')[0];
         }
        LineNumber++;
     }

我正在使用的CSV文件可能有8列,每列都有一种信息。单行就像一个东西列表。

但是我现在已经坐了3天了,我根本不知道如何打印出我想要的特定行和列的文件。

我在这里的东西遍历每一行,当它在行中某处找到输入时,它会将整行写出来。

之后我尝试创建一个var myValue,它将跳过第一个(Header)行,并将我输入的特定列写为最后的数字。但是,我不知何故需要找到改变线的方法。因为它似乎总是只占用第一条数据线。我检查了它是否正在使用int LineNumber ++读取行号并且它正在给我回到我想要的数字。如何将该数字放入代码中以便输出我需要的特定单元格?

2 个答案:

答案 0 :(得分:1)

为什么你再读一遍整个文件只是为了跳过一行?您已经在line变量中找到了您感兴趣的行。

只需将其拆分并获取所需的列(我猜想的第一个):

using(var sr = new StreamReader(fileInput))
while ((line = sr.ReadLine()) != null) {
    if (line.Contains(mK)) // <---Variable inputted by the user
    {
        var value = line.Split(",")[0];
        Console.WriteLine(value);
    }
}

答案 1 :(得分:0)

费德里科已经回答了这个问题但是,这里有关于你LineNumber变量的另一个问题。

using (var sr = new StreamReader(fileInput))

while ((line = sr.ReadLine()) != null)
      {
        LineNumber++;
        if(LineNumber < 1)//if reading header record
        {
        //skip
        }
        else
        {
        //not reading header line
        //check if the line meets your criteria
          if(line == "my anticipated value")
          {
              line.Split(',')[0];//pull index 0 from the array on strings created by split
          }
        }
     }