CSVHelper编写固定长度字段

时间:2019-04-07 09:14:23

标签: csvhelper

自从我编写字符串以来,我一直在编写csv文件,但是在寻找更结构化的解决方案时,我遇到了csvhelper。我很清楚如何读取数据并执行类型转换,但是在编写csv文件以指定字段长度时该怎么办?假设我有一个从0开始且长度为4个字符的字段...我该如何指定呢?我还没有找到属性,大约...

谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用自定义类型转换器来指定固定宽度。

void Main()
{
    var records = new List<Foo>
    {
        new Foo { Id = 1, Name = "one" },
    };

    using (var writer = new StreamWriter("path\\to\\file.csv"))
    using (var csv = new CsvWriter(writer))
    {
        csv.Configuration.RegisterClassMap<FooMap>();
        csv.WriteRecords(records);
    }
}

public class Foo
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public sealed class FooMap : ClassMap<Foo>
{
    public FooMap()
    {
        AutoMap();
        Map(m => m.Id).TypeConverter<FixedWidthOutput>();
    }
}

public class FixedWidthOutput : Int32Converter
{
    public override string ConvertToString(object value, IWriterRow row, MemberMapData memberMapData)
    {
        return value.ToString().PadLeft(4, '0');
    }
}