首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用CSVHelper读取不带头的CSV文件

使用CSVHelper读取不带头的CSV文件
EN

Stack Overflow用户
提问于 2021-12-30 16:08:51
回答 1查看 3.2K关注 0票数 0

我有很多没有头的CSV文件,需要在C#中读取。我手动将头添加到其中一个文件中,使用下面的代码使用CSVHelper可以读取这些文件并在GridView中显示它们。

现在我的问题是,我如何在没有头文件的情况下读取这些文件?或者如何在第一行中使用CSVHelper添加标题(新记录)?

代码语言:javascript
运行
复制
 public Form1()
    {
        InitializeComponent();
        List<Festival> records;
        var config = new CsvConfiguration(CultureInfo.InvariantCulture) { Delimiter = ";" };
        using (var reader = new StreamReader(@"File8.csv"))
            using(var csv = new CsvReader(reader, config))
        {
            records = csv.GetRecords<Festival>().ToList();
        }
        
        dataGridView1.DataSource = records;
    }

班级

代码语言:javascript
运行
复制
 public class Festival
{
    public string Day { get; set; }
    public string Start { get; set; }
    public int Lenght { get; set; }
    public string FilmName { get; set; }
    public float Rating { get; set; }
}

csv样本

代码语言:javascript
运行
复制
Mi;22:15;110;A;8
Mi;19:00;106;B;8
Mi;19:15;97;C;8.2
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-30 16:14:22

向目标成员添加列索引映射属性:

代码语言:javascript
运行
复制
public class Festival
{
    [Index(0)]
    public string Day { get; set; }

    [Index(1)]
    public string Start { get; set; }

    [Index(2)]
    public int Lenght { get; set; }

    [Index(3)]
    public string FilmName { get; set; }

    [Index(4)]
    public float Rating { get; set; }
}

并在配置中指定HasHeaderRecord = false

代码语言:javascript
运行
复制
var config = new CsvConfiguration(CultureInfo.InvariantCulture) { Delimiter = ";", HasHeaderRecord = false };

如果不希望修改目标模型,则implement a ClassMap instead

代码语言:javascript
运行
复制
public sealed class FestivalMap : ClassMap<Festival>
{
    public FestivalMap()
    {
        Map(f => f.Day).Index(0);
        Map(f => f.Start).Index(1);
        Map(f => f.Lenght).Index(2);
        Map(f => f.FilmName).Index(3);
        Map(f => f.Rating).Index(4);
    }
}

并在获取记录之前像这样注册它(仍然需要在配置中指定HasHeaderRecord = false ):

代码语言:javascript
运行
复制
csv.Context.RegisterClassMap<FestivalMap>();
records = csv.GetRecords<Festival>().ToList();
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70534001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档