Search code examples
c#.netcsvcsvhelper

How to read a header from a specific line with CsvHelper?


I'm trying to read a CSV file where header is at row 3:

some crap line
some empty line
COL1,COL2,COl3,...
val1,val2,val3
val1,val2,val3

How do I tell CSVHelper the header is not at the first row?

I tried to skip 2 lines with Read() but the succeeding call to ReadHeader() throws an exception that the header has already been read.

using (var csv = new CsvReader(new StreamReader(stream), csvConfiguration)) {
   csv.Read();
   csv.Read();
   csv.ReadHeader();
   .....

If I set csvConfiguration.HasHeaderRecord to false ReadHeader() fails again.


Solution

  • Try this:

    using (var reader = new StreamReader(stream)) {
          reader.ReadLine();
          reader.ReadLine();
          using (var csv = new CsvReader(reader)) {                    
              csv.ReadHeader();                    
        }
    }