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

问题描述 投票:0回答:3

我正在使用 CsvHelper 库从

IEnumerable<Person>
生成 CSV 文件,其中
Person
是一个基本类。

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

我需要编写带引号的标题,即结果文件中的列应该是“显示名称”,而不是“显示名称”。

我该怎么做?

c# csvhelper
3个回答
9
投票

创建一个

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

输出:

Display Name,Age
one,1
two,2

0
投票

我没有带有解决方法的标题,所以我做了这个快速解决方法:

foreach (var property in typeof(MyCsvClass).GetProperties())
{
  csvWriter.WriteField(property.Name.Replace('_', ' '));
}
csvWriter.NextRecord();
csvWriter.WriteRecords(models);

这需要属性名称并将下划线替换为空格,因此我可以使用下划线而不是空格来命名属性,并且它映射正确。

但是,它要求您使用 CsvWriter 上的

HasHeaderRecord = false
选项。


0
投票

使用 Attributes

配置标头名称

以人为例:

public class Person
{
    [Name("Display Name")]
    public string DisplayName { get; set; }
    [Name("Age")]
    public int Age { get; set; }
}

另一个例子:

using CsvHelper.Configuration.Attributes;

public class CompanyExportData
{
    [Name("Company Code")]
    public string DisplayName { get; set; } = "Store";
    [Name("Employee Number")]
    public string EmployeeNumber { get; set; }
    [Name("Primary Email Address")]
    public string PrimaryEmailAddress { get; set; }
}

来自 CSVHelper 文档,了解如何使用属性

© www.soinside.com 2019 - 2024. All rights reserved.