CSV Helper, как читать CSV-файл с несколькими строками заголовка - PullRequest
0 голосов
/ 27 февраля 2020

Я использую CsvHelper для записи файла csv с несколькими строками заголовка в разных позициях (заголовки имеют некоторое количество столбцов, но разные имена). Количество строк после каждого заголовка различно.

Есть ли возможность использовать CsvHelper для поиска / итерации по различным строкам заголовка в файле csv (возможно, путем поиска по имени или части имен для столбцы заголовков) и итеративно читать записи после каждого заголовка?

1 Ответ

1 голос
/ 27 февраля 2020

Вам нужно будет сделать это вручную, прочитать строку за строкой и решить, что вы собираетесь делать.

Пример запуска:

Файл CSV:

Test1, Test2, Test3

A, 1, foo

TestA, TestB, Test3

B, 07a0fca2-1b1 c -4e44-b1be-c2b05da5afc7 , bar

void Main()
    {
        using (var reader = new StreamReader("path\\to\\file.csv"))
        using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
        {
            csv.Configuration.HasHeaderRecord = false;
            csv.Configuration.RegisterClassMap<FooMap>();
            csv.Configuration.RegisterClassMap<BarMap>();
            var fooRecords = new List<Foo>();
            var barRecords = new List<Bar>();
            while (csv.Read())
            {
                switch (csv.GetField(0))
                {
                    case "A": // Or "Test1"
                        ...
                        break;
                    case "B": // Or "TestA"
                        ...
                        break;
                    default:
                        throw new InvalidOperationException("Unknown record type.");
                }
            }
        }
    } 

Пример и документация: Чтение нескольких типов записей

...