仅从 csv 读取 headers

Reading only headers from csv

我正在尝试使用 CSVHELPER 从 csv 文件中只读取 headers 但我无法获得 csvhelper 的 GetFieldHeaders() 方法。

我已经从这个 link 中获取了代码: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文件

中读取headers

更新:Headers 在我的 csv 文件中如下所示:

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

所以有人能告诉我我缺少什么吗??

我没有尝试使用这个库。但是快速浏览文档带来了这个可能的解决方案:

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

请尝试以下代码...希望这对您有所帮助。

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

注意:headers 将 return 所有 header 放在一起。您需要为每个逗号创建子字符串以分别获得每个 header。

您可以试试这个:

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

其他答案中的所有方法似乎都已在最新版本中删除? 这对我有用:

using (var fileReader = File.OpenText("data.csv"))
{
    var csv = new CsvReader(fileReader);
    csv.Configuration.HasHeaderRecord = true;
    csv.Read();
    csv.ReadHeader();
    string[] headers = ((CsvFieldReader)((CsvParser)csv.Parser).FieldReader).Context.HeaderRecord;
}