如何使用 CsvHelper 编写带有空格的标题?

kjv*_*kjv 6 c# csvhelper

我正在使用 CsvHelper 库从 生成一个 CSV 文件IEnumerable<Person>,其中Person是一个基本类。

public class Person
{
    public string DisplayName { get; set; }
    public int Age { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我需要写带引号的标题,即不是“DisplayName”,结果文件中的列应该是“Display Name”。

我怎样才能做到这一点?

Jos*_*ose 7

创建一个ClassMap.

void Main()
{
    using (var stream = new MemoryStream())
    using (var writer = new StreamWriter(stream))
    using (var reader = new StreamReader(stream))
    using (var csv = new CsvWriter(writer))
    {
        var records = new List<Person>
        {
            new Test { DisplayName = "one", Age = 1},
            new Test { DisplayName = "two", Age = 2 },
        };
        
        csv.Configuration.RegisterClassMap<PersonMap>();
        csv.WriteRecords(records);
        
        writer.Flush();
        stream.Position = 0;
        
        Console.WriteLine(reader.ReadToEnd());
    }
}

public class Person
{
    public string DisplayName { get; set; }
    public int Age { get; set; }
}

public sealed class PersonMap : ClassMap<Person>
{
    public PersonMap()
    {
        Map(m => m.DisplayName).Name("Display Name");
        Map(m => m.Age);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

Display Name,Age
one,1
two,2
Run Code Online (Sandbox Code Playgroud)

  • 有没有办法让它变得通用? (3认同)
  • 对于 2019 年尝试此操作的任何人,您需要将“CsvClassMap&lt;Person&gt;”更改为“ClassMap&lt;Person&gt;” (3认同)