C# 05.02.2019 admin No comments

Чтение и запись CSV в C#

В данной статье мы поработаем с файлом csv. В первой части мы разберём чтение, а во второй запись. Работать будем с простым консольным приложением, а также библиотекой CsvHelper. Её вы можете установить при помощи NuGet.

Чтение csv файла

Ниже привожу пример csv, который я буду использовать (programmingLanguages.csv):

Name,Developer
J#,Microsoft
Pico,Vrije Universiteit Brussel
NWScript,BioWare
ELAN,Technical University of Berlin
Alice ML,Saarland University

Мы можем прочитать файл при помощи следующего программного кода:

using CsvHelper;
using System.Collections;
using System.IO;

namespace Csv
{
    public class ProgrammingLanguage
    {
        public string Name { get; set; }
        public string Developer { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // указываем путь к файлу csv
            string pathCsvFile = "D:\\programmingLanguages.csv";

            using (StreamReader streamReader = new StreamReader(pathCsvFile))
            {
                using (CsvReader csvReader = new CsvReader(streamReader))
                {
                    // указываем используемый разделитель
                    csvReader.Configuration.Delimiter = ",";
                    // получаем строки
                    IEnumerable programmingLanguages =
                        csvReader.GetRecords<ProgrammingLanguage>();
                }
            }
        }
    }
}

Если свойства в классе отличаются от заголовков в файле, то вы можете указать для каждого свойства класса NameAttribute:

programmingLanguages.csv:

Название языка,Разработчик
J#,Microsoft
Pico,Vrije Universiteit Brussel
NWScript,BioWare
ELAN,Technical University of Berlin
Alice ML,Saarland University

Добавляем NameAttribute в класс ProgrammingLanguage:

public class ProgrammingLanguage
{
    [Name("Название языка")]
    public string Name { get; set; }
    [Name("Разработчик")]
    public string Developer { get; set; }
}

Если у вас нет заголовка в csv файле, то вам нужно указать это в конфигурации:

using (CsvReader csvReader = new CsvReader(streamReader))
{
    csvReader.Configuration.HasHeaderRecord = false;
    csvReader.Configuration.Delimiter = ",";
    IEnumerable programmingLanguages = csvReader.GetRecords<ProgrammingLanguage>();
}

Запись в файл csv

Привожу ниже программный код:

using CsvHelper;
using System.Collections.Generic;
using System.IO;

namespace Csv
{
    public class ProgrammingLanguage
    {
        public string Name { get; set; }
        public string Developer { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // указываем путь к файлу csv
            string pathCsvFile = "D:\\programmingLanguages.csv";

            // добавляем тестовые данные, которые будем записывать в csv файл
            List<ProgrammingLanguage> programmingLanguages = new List<ProgrammingLanguage>
            {
                new ProgrammingLanguage {
                    Name = "J#", Developer = "Microsoft" },
                new ProgrammingLanguage {
                    Name = "Pico", Developer = "Vrije Universiteit Brussel" },
                new ProgrammingLanguage {
                    Name = "NWScript", Developer = "BioWare" }

                new ProgrammingLanguage {
                    Name = "ELAN", Developer = "Technical University of Berlin" }

                new ProgrammingLanguage {
                    Name = "Alice ML", Developer = "Saarland University" }
            };

            using (StreamWriter streamReader = new StreamWriter(pathCsvFile))
            {
                using (CsvWriter csvReader = new CsvWriter(streamReader))
                {
                    // указываем разделитель, который будет использоваться в файле
                    csvReader.Configuration.Delimiter = ",";
                    // записываем данные в csv файл
                    csvReader.WriteRecords(programmingLanguages);
                }
            }
        }
    }
}



1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (4 оценок, среднее: 4,00 из 5)
Загрузка...