【问题标题】:Reading only headers from csv仅从 csv 读取标题
【发布时间】:2016-12-27 07:27:49
【问题描述】:

我正在尝试使用 CSVHELPER 从 csv 文件中仅读取标题,但我无法获取 csvhelper 的 GetFieldHeaders() 方法。

我已从该链接获取代码: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

那么谁能告诉我我错过了什么??

【问题讨论】:

  • 这是扩展库,请联系作者。但是,我建议你应该使用 StreamReader 和 ReadLine 方法。
  • @HienNgo :我在这里发帖是因为可能有人用过它,我可以得到答案
  • 能否请您发布您的data.csv 的内容?还有,你设置csv.Configuration.HasHeaderRecord = true;了吗?
  • @a-man:我更新了我的问题以包含 csv 文件的标题。您能否发布任何代码来显示如何从 csv 文件中读取标题而不是记录,因为其中有数百万条记录我的 csv 文件
  • 我在作者的 [CsvHelper/src/CsvHelper.Tests/Reading/MultipleHeadersTests.cs] 中看到。你试过 csv.ReadHeader() 吗?

标签: c# csvhelper


【解决方案1】:

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

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

注意:headers 将一起返回所有标题。您需要为每个逗号创建子字符串以分别获取每个标题。

【讨论】:

  • 是的,这行得通。非常感谢您的回答。非常感谢
【解决方案2】:

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

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

【讨论】:

  • 你在哪里找到这个方法:GetFieldHeaders();??
  • 我添加了单行csv.Configuration.HasHeaderRecord = true;。其余的代码是你的。如果你还没有实现,可能你必须实现它。
【解决方案3】:

你可以试试这个:

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

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-28
      • 1970-01-01
      • 2014-09-17
      • 2018-11-05
      • 2023-02-14
      相关资源
      最近更新 更多