使用 CSVHelper 自定义 header 格式
Custom header format with CSVHelper
我需要用驼峰式 header 写一个 CSV 文件。
假设我们有这个 class
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
我希望header采用驼峰式格式
id,firstName,lastName
1,John,Doe
最后一件重要的事情是,我不知道 objects 所以 ClassMaps 或属性不是一个选项。
有没有办法配置 header 如何使用 CSVHelper 格式化?
使用 DefaultClassMap<T>
这应该适用于您提供的任何 class。
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; }
}
我需要用驼峰式 header 写一个 CSV 文件。
假设我们有这个 class
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
我希望header采用驼峰式格式
id,firstName,lastName
1,John,Doe
最后一件重要的事情是,我不知道 objects 所以 ClassMaps 或属性不是一个选项。
有没有办法配置 header 如何使用 CSVHelper 格式化?
使用 DefaultClassMap<T>
这应该适用于您提供的任何 class。
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; }
}