2016-12-30 160 views
1

我有一個CSV文件。我需要編寫一個代碼,我們可以通過用戶名從CSV獲得一行。我需要更新或從CSV文件中刪除該行。我設法通過用戶名獲取行數據。但我沒有任何想法如何編寫更新或刪除功能的代碼。我的代碼獲得單行如下編輯和/或刪除CSV文件中的一行

StreamReader reader = new StreamReader(System.IO.File.OpenRead(@"C:\Test\test.CSV")); 

     UserDetailsViewModel objInput = new UserDetailsViewModel(); 

     while (!reader.EndOfStream) 
     { 
      string line = reader.ReadLine(); 
      if (!String.IsNullOrWhiteSpace(line)) 
      { 
       string[] values = line.Split(','); 
       if (values[0] == "Bharat") 
       { 
        objInput.FirstName = values[0]; 
        objInput.LastName = values[1]; 
        objInput.Address1 = values[2]; 
        objInput.Address2 = values[3]; 
        objInput.City = values[4]; 
        objInput.State = values[5]; 
        objInput.ZipCode = values[6]; 
        break; 

       } 
      } 
     } 
     reader.Dispose(); 
     return View(objInput); 

請別人幫我寫一個代碼更新和刪除CSV文件。

在此先感謝。

+4

您到目前爲止嘗試過了什麼?那麼你如何寫下你將如何做爲人類,然後從那裏開始 – BugFinder

+0

到目前爲止,我可以從CSV中獲取數據並將其存儲到數組中。我仍然試圖更新CSV上的單行而不影響整個CSV文件。現在它覆蓋整個CSV與更新的值。使用上述代碼的 – crony

回答

0

您可以使用下面的方法實現您想要的結果。

- >首先你必須讀你的.csv文件。

- >然後遍歷文件的每一行,同時您可以選擇任何行進行編輯/刪除,然後對該行進行更改並將該行存儲到字符串列表中。

- >最後你必須寫入字符串列表到文件。就這樣。

例如:

List<String> lines = new List<String>(); 
    using (StreamReader reader = new StreamReader(System.IO.File.OpenRead(@"C:\Test\test.CSV"));) 
    { 
     String line; 
     while ((line = reader.ReadLine()) != null) 
     { 
      if (line.Contains(",")) 
      { 
       String[] split = line.Split(','); 

       if (//condition for Edit record like : split[1] == "abc" etc.) 
       { 
        // update that 
        split[1] = "xyz"; 
        line = String.Join(",", split); 
        lines.Add(line); 
       } 
       if (//condition for Delete row.) 
       { 
        // don't add that row into string list 
       } 
      } 

     } 
    } 

    using (StreamWriter writer = new StreamWriter(@"C:\Test\test.CSV", false)) 
    { 
     foreach (String line in lines) 
      writer.WriteLine(line); 
    } 
+0

將覆蓋所有整個CSV。例如,我試圖修改第二行的數據。它修改數據並覆蓋整個文件並顯示單個更新的行 – crony

+0

是的。它覆蓋整個CSV文件,但我不認爲有更新單行的方法。因爲如果我們想修改文件中的任何記錄,那麼我們必須將整個文件數據再次寫入文件。 – CommonPlane