2017-04-09 59 views
0

就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 ++的行號,它將我想要的數字還給我。如何將該數字放入代碼中,以便輸出我需要的特定單元格?

+1

不要把問題標題解決了,接受答案是人們如何知道它是如何解決的。 –

回答

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); 
    } 
} 
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 
      } 
     } 
    } 
相關問題