2017-09-25 61 views
1

我使用CsvHelper库从IEnumerable生成CSV文件< Person>,其中Person是基本类。CsvHelper - 用空格编写头文件

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

我需要写引述头,即而不是显示名称,生成的文件中列应为“显示名称”。

我该怎么做?

+1

C#?还有别的吗? – doctorlove

回答

1

创建一个CsvClassMap

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 : CsvClassMap<Person> 
{ 
    public PersonMap() 
    { 
     Map(m => m.DisplayName).Name("Display Name"); 
     Map(m => m.Age); 
    } 
} 

输出:

Display Name,Age 
one,1 
two,2 
+0

有没有一种方法可以使通用? – nawfal

+0

你是什么意思的通用? –

+0

对不起,我的意思是,有没有一种方法*包括复合词属性中的空格*可以一般/自动处理(对于任何对象)而不是编写自定义映射器。对于例如属性'AccountType'应该对应于标题'Account Type'。通过在CsvReader上设置属性,可以阅读这些内容。但是写作我们没有。 – nawfal