CSVHelper编写固定长度字段

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

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

谢谢

csvhelper
1个回答
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');
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.