2016-12-27 97 views
1

我想從csv文件中使用CSVHELPER只讀取標題,但我無法獲得csvhelper的方法GetFieldHeaders()只讀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文件

更新頭:在我的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; 
    }