【问题标题】:C# write out specific cell from CSV fileC# 从 CSV 文件中写出特定的单元格
【发布时间】:2017-04-09 14:48:26
【问题描述】:

就 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,它会跳过第一行(标题)并将我输入的特定列写为最后的数字。但是,我不知何故需要找到改变线路的方法。因为它似乎总是只取第一条数据线。我检查了它是否使用 int LineNumber++ 读取行号是否正常,并且它正在给我返回我想要的数字。如何将该数字放入代码中,以便输出我需要的特定单元格?

【问题讨论】:

  • 不要把已解决的问题放在你的问题标题中,接受答案是人们知道它已解决的方式。

标签: c# csv


【解决方案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);
    }
}

【讨论】:

    【解决方案2】:

    Federico 已经回答了这个问题,但是,关于您的 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
              }
            }
         }
    

    【讨论】:

      猜你喜欢
      • 2019-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多