c#在CSV文件中把字符串分成不同的单元格

本文关键字:单元格 字符串 CSV 文件 | 更新日期: 2023-09-27 18:11:20

如何将每行分隔成不同的单元格?我得到了用逗号分隔的信息行,但我想以同样的方式分隔它们。

        string path = @"..'Debug'data'IrisData.csv";
        var content = File.ReadAllText(path);
        var contentLines = content.Split(''n');
        var csv = from line in contentLines
                  select line.Split(',').ToArray();
        using (StreamWriter sw = new StreamWriter(path, true))
        {
            foreach (var data in csv)
            {
                foreach (var cell in data)
                {
                    var newline = string.Format("{0}", cell);
                    newline = cell != data[4] ? newline + "," : newline;
                    sw.Write(newline);
                }
                sw.Write(Environment.NewLine);
            }
        }

        Console.WriteLine("Press any key to continue...");
        Console.ReadLine();

c#在CSV文件中把字符串分成不同的单元格

你可以这样尝试:

newline = cell != data[4] ? "'"" + newline + "'"," : newline;

";"分隔数据到不同的单元格

您可以查看TextFieldParser:

确保添加对Microsoft的引用。VisualBasic Assembly,并添加using Microsoft.VisualBasic.FileIO;

            using (TextFieldParser parser = new TextFieldParser(@"..'Debug'data'IrisData.csv"))
        {
            parser.SetDelimiters(new String[] { "," });
            while (!parser.EndOfData)
            {
                string[] fields = parser.ReadFields();

                // fields will contain every seperated cell
            }
        }

我不确定我是否理解了你的问题。

您是否试图将csv文件分开并重新组合在一起?至少在我看来你的代码是这样的。

我不喜欢对每个变量使用var,因为它可能导致错误或意外行为。我想这也发生在你身上。

String.Split(char)返回string[]

        foreach (var data in csv) // csv is a string[] -> data is a string
        {
            // data is a string which is basically a char[] -> cell is a char
            // I don't think, that's what you wanted...
            foreach (var cell in data) 
            {
                var newline = string.Format("{0}", cell);
                newline = cell != data[4] ? newline + "," : newline;
                sw.Write(newline);
            }
            sw.Write(Environment.NewLine);
        }

也许你可以告诉我,你真正想做什么,这样我可以帮助你:)