Member 13970922 Ответов: 2

Как читать csv-файл построчно и их поля.


Я новичок в C#, только начал кодировать.
Я хочу читать csv-файл строка за строкой и их поля. Затем запишите его в текстовый файл (1new.txt) путем добавления в него данных из текстового поля.

Что я уже пробовал:

using (TextFieldParser parser = new TextFieldParser(@"c:\\barcode\\brcd4.csv"))
                {

                    parser.TextFieldType = FieldType.Delimited;
                    parser.SetDelimiters(",");
                    // parser.SetDelimiters("|");



                    //string[] fields; // Used to hold the fields after each read




                    {
                        string[] fields = parser.ReadFields(); // Parse the line just read into the array

                        // foreach (var field in fields)         // Process the fields

                        List<string[]> listOfValues = new List<string[]>();
                        using (var fs = File.OpenRead(@"c:\\barcode\\brcd4.csv"))
                        using (var read = new StreamReader(fs))
                        {
                            while (!read.EndOfStream)
                            {

                                int i = 0;
                                var line = read.ReadLine();
                                while (i <= 10)
                                {
                                    var values = line.Split(',');

                                    // var line = read.ReadLine();
                                     //listOfValues.Add(line.Split(','));



                                    //string[] fields = parser.ReadFields();


                                    //using (var fields = new StreamReader(@"c:\\barcode\\brcd4.csv"))


                                    //var fields = sw1.GetField<int>(0);

                                    sw1.WriteLineAsync(textBox1.Text + "" + fields[0]);
                                    sw1.WriteLineAsync(textBox2.Text + "" + fields[1]);
                                    sw1.WriteLineAsync(textBox3.Text + "" + fields[2]);
                                    sw1.WriteLineAsync(textBox4.Text + "" + fields[3]);
                                    sw1.WriteLineAsync(textBox5.Text + "" + fields[4]);
                                    sw1.WriteLineAsync(textBox6.Text + "" + fields[5]);
                                    sw1.WriteLineAsync(textBox1.Text + "" + fields[6]);
                                    //sw1.WriteLineAsync(textBox2.Text + "" + fields[7]);
                                    //sw1.WriteLineAsync(textBox3.Text + "" + fields[8]);
                                    //sw1.WriteLineAsync(textBox4.Text + "" + fields[9]);
                                    //sw1.WriteLineAsync(textBox5.Text + "" + fields[10]);
                                    //sw1.WriteLineAsync(textBox6.Text + "" + fields[11]);


                                    //Console.Write(values[i]);
                                    //Console.Read();
                                    i++;
                                    // {
                                       Console.Write(values + "  |  ");
                                    //  }
                                    // Console.WriteLine();
                                }

                            }
                        }
File.WriteAllText(@"c:\barcode\1new.txt", sw1.ToString());

F-ES Sitecore

Не используйте класс TextFieldParser, если вы загуглите "c# read csv file", вы найдете примеры, использующие собственные классы .net.

2 Ответов

Рейтинг:
0

OriginalGriff

Лучший способ-использовать существующий пакет - Быстрый читатель CSV[^] это тот, который я использую - поскольку это не так просто, как вы могли бы подумать. Помните, что строки могут содержать запятые и двойные кавычки, так что это не тривиальный случай разбиения на запятые и обрезки двойных кавычек - вы должны сделать некоторую интеллектуальную обработку.


Maciej Los

Вот это да!

Рейтинг:
0