2016-12-27 3 views
1

Я пытаюсь читать только заголовки из файла csv с помощью CSVHELPER, но я не могу получить GetFieldHeaders() метод csvhelper.Чтение только заголовков из csv

Я взял код по этой ссылке: Source

public static String[] GetHeaders(string filePath) 
     { 
      using (CsvReader csv = new CsvReader(new StreamReader("data.csv"))) 
      { 
       int fieldCount = csv.FieldCount; 

       string[] headers = csv.GetFieldHeaders();//Error:doesnt contains definition 
      } 
     } 

Но GetFieldHeaders не работает.

Примечание: Я только хочу, чтобы прочитать заголовки из CSV-файла

Update: заголовки в моих CSV-файлов, как показано ниже:

Id,Address,Name,Rank,Degree,Fahrenheit,Celcius,Location,Type,Stats 

Так может кто-нибудь сказать мне, что я не хватает ??

+0

Это библиотека расширения, и вы должны связаться с автором. Но я предлагаю вам использовать методы StreamReader и ReadLine. –

+0

@HienNgo: Я разместил здесь, потому что может быть кто-то его использовал, и я могу получить ответ –

+0

не могли бы вы разместить содержание своего 'data.csv'? также, вы установили 'csv.Configuration.HasHeaderRecord = true;'? –

ответ

3

Пожалуйста, попробуйте под кодом ... надеюсь, это вам поможет.

var csv = new CsvReader(new StreamReader("YOUR FILE PATH"));   
csv.ReadHeader();   
var headers = csv.Parser.RawRecord; 

Примечание: headers вернет все заголовки вместе .. вам нужно будет сделать подстроку (ы) для каждой запятой, чтобы получить каждый заголовок отдельно.

+0

Да, это сработало. Большое вам спасибо за ответ. –

1

Я не пытался использовать эту библиотеку. Но краткий обзор документации привел это возможное решение:

public static String[] GetHeaders(string filePath) 
    { 
     using (CsvReader csv = new CsvReader(new StreamReader("data.csv"))) 
     { 
      csv.Configuration.HasHeaderRecord = true; 
      int fieldCount = csv.FieldCount; 

      string[] headers = csv.GetFieldHeaders(); 
     } 
    } 

* См documentation и поиска header.

+0

Где вы нашли этот метод: GetFieldHeaders(); ?? –

+0

Я добавил одну строку 'csv.Configuration.HasHeaderRecord = true;'. Остальная часть кода принадлежит вам. Вероятно, вам нужно реализовать это, если вы еще этого не сделали. –

1

Вы можете попробовать это вместо:

public IEnumerable<string> ReadHeaders(string path) 
    { 
     using (var reader = new StreamReader(path)) 
     { 
      var csv = new CsvReader(reader); 
      if (csv.Read()) 
       return csv.FieldHeaders; 
     } 
     return null; 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^