2017-09-25 86 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