【问题标题】:Custom header format with CSVHelper使用 CSVHelper 自定义标题格式
【发布时间】:2022-01-11 16:58:36
【问题描述】:

我需要编写一个带有驼峰式标题的 CSV 文件。

假设我们有这个类

public class Person
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

还有下面的代码

public void Main()
{
    var p = new Person { Id = 1, FirstName = "John", LastName = "Doe" };
    
    using (var writer = new StringWriter())
    using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture, true))
    {
        csv.WriteHeader<Person>();
        csv.NextRecord();
        csv.WriteRecord(p);
        csv.Flush();
        var newRecord = writer.ToString();
        newRecord.Dump();
    }
}

这将输出以下内容

Id,FirstName,LastName
1,John,Doe

我希望标题为驼峰格式

id,firstName,lastName
1,John,Doe

最后重要的是,我不知道对象,所以 ClassMaps 或属性不是一个选项。

有没有办法用 CSVHelper 配置标题的格式?

【问题讨论】:

标签: .net csvhelper


【解决方案1】:

使用DefaultClassMap&lt;T&gt; 这应该适用于您提供的任何课程。

public void Main()
{
    var p = new Person { Id = 1, FirstName = "John", LastName = "Doe" };
    
    using (var writer = new StringWriter())
    using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture, true))
    {
        var map = new DefaultClassMap<Person>();
        
        map.AutoMap(CultureInfo.InvariantCulture);
        
        foreach (var memberMap in map.MemberMaps)
        {
            memberMap.Data.Names.Add(System.Text.Json.JsonNamingPolicy.CamelCase.ConvertName(memberMap.Data.Member.Name));
        }
        
        csv.Context.RegisterClassMap(map);
        
        csv.WriteHeader<Person>();
        csv.NextRecord();
        csv.WriteRecord(p);
        csv.Flush();
        var newRecord = writer.ToString();
        newRecord.Dump();
    }
}

public class Person
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多