MyTetra Share
Делитесь знаниями!
Чтение и запись CSV в C# CsvHelper
Время создания: 04.09.2019 18:55
Автор: progtask.ru
Текстовые метки: c#, csv, CsvHelper
Раздел: Компьютер - C# - Работа с CSV
Запись: Kozlov-AE/Tetra/master/base/1563779858e1065ai3e2/text.html на raw.githubusercontent.com

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

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

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


1

2

3

4

5

6

Name,Developer

J#,Microsoft

Pico,Vrije Universiteit Brussel

NWScript,BioWare

ELAN,Technical University of Berlin

Alice ML,Saarland University

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


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

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:

1

2

3

4

5

6

Название языка,Разработчик

J#,Microsoft

Pico,Vrije Universiteit Brussel

NWScript,BioWare

ELAN,Technical University of Berlin

Alice ML,Saarland University

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

1

2

3

4

5

6

7

public class ProgrammingLanguage

{

    [Name("Название языка")]

    public string Name { get; set; }

    [Name("Разработчик")]

    public string Developer { get; set; }

}

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

1

2

3

4

5

6

using (CsvReader csvReader = new CsvReader(streamReader))

{

    csvReader.Configuration.HasHeaderRecord = false;

    csvReader.Configuration.Delimiter = ",";

    IEnumerable programmingLanguages = csvReader.GetRecords<ProgrammingLanguage>();

}

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

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);

                }

            }

        }

    }

}

 
MyTetra Share v.0.59
Яндекс индекс цитирования