编辑和/或删除CSV文件中的行

时间:2016-12-30 09:01:48

标签: c# asp.net asp.net-mvc file 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文件的更新和删除代码。

先谢谢。

2 个答案:

答案 0 :(得分: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);
    }

答案 1 :(得分:0)

阅读和编写csv通常比初看起来更复杂。 使用像KBCsv(https://github.com/kentcb/KBCsv)这样的库来完成该任务