С тех пор я пишу файлы csv, составляя строки, но в поисках более структурированного решения я наткнулся на csvhelper. Мне понятно, как читать данные и выполнять преобразование типов, но как насчет того, чтобы при записи csv-файла указать длину поля? предположим, у меня есть поле, которое начинается с 0 и имеет длину 4 символа... как я могу указать это? Я не нашел и атрибут или около того ....
Спасибо
Вы можете использовать пользовательский преобразователь типов, чтобы указать фиксированную ширину.
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');
}
}