CsvHelper 在最后 value/column 之后添加 `;`
CsvHelper add `;` after last value/column
是否有任何配置可以让我在最后一个值后添加 ;
?
FirstName;SecondName
A;B
我需要它
FirstName;SecondName;
A;B;
这是我的代码:
using (TextWriter writer = new StreamWriter(fd.FileName, false, System.Text.Encoding.UTF8))
{
var csv = new CsvWriter(writer, new CsvConfiguration(CultureInfo.InvariantCulture)
{
Delimiter = ";",
});
csv.Configuration.RegisterClassMap<DataRowClassMap>();
csv.WriteRecords(_rows);
}
提前致谢
编辑。地图Class
public sealed class DataRowClassMap : ClassMap<DataRow>
{
public DataRowClassMap()
{
Map(m => m.ListingNumber).Ignore();
Map(m => m.FirstName).Index(0).Name("FirstName");
Map(m => m.LastName).Index(1).Name("LastName");
}
}
第一个解决方案 - 循环:
using (TextWriter writer = new StreamWriter(fd.FileName, false, System.Text.Encoding.UTF8))
{
var csv = new CsvWriter(writer, new CsvConfiguration(CultureInfo.InvariantCulture)
{
Delimiter = ";",
});
csv.Configuration.RegisterClassMap<DataRowClassMap>();
csv.WriteHeader<DataRow>(); // write headers
csv.WriteField(""); // it will be `;` in file
csv.NextRecord();
foreach (var item in _rows)
{
csv.WriteRecord(item); // actual data
csv.WriteField(""); // it will be `;` in file
csv.NextRecord();
}
}
第二种解决方案 - hack,创建新的 属性:
public sealed class DataRowClassMap : ClassMap<DataRow>
{
public DataRowClassMap()
{
Map(m => m.ListingNumber).Ignore();
Map(m => m.FirstName).Index(0).Name("FirstName");
Map(m => m.LastName).Index(1).Name("LastName");
// solution hack
Func<DataRow, string> func = x => "";
Map(x => x.HackForCommaAfterLastColumn).Index(3).Name("").ConvertUsing(func);
}
}
是否有任何配置可以让我在最后一个值后添加 ;
?
FirstName;SecondName
A;B
我需要它
FirstName;SecondName;
A;B;
这是我的代码:
using (TextWriter writer = new StreamWriter(fd.FileName, false, System.Text.Encoding.UTF8))
{
var csv = new CsvWriter(writer, new CsvConfiguration(CultureInfo.InvariantCulture)
{
Delimiter = ";",
});
csv.Configuration.RegisterClassMap<DataRowClassMap>();
csv.WriteRecords(_rows);
}
提前致谢
编辑。地图Class
public sealed class DataRowClassMap : ClassMap<DataRow>
{
public DataRowClassMap()
{
Map(m => m.ListingNumber).Ignore();
Map(m => m.FirstName).Index(0).Name("FirstName");
Map(m => m.LastName).Index(1).Name("LastName");
}
}
第一个解决方案 - 循环:
using (TextWriter writer = new StreamWriter(fd.FileName, false, System.Text.Encoding.UTF8))
{
var csv = new CsvWriter(writer, new CsvConfiguration(CultureInfo.InvariantCulture)
{
Delimiter = ";",
});
csv.Configuration.RegisterClassMap<DataRowClassMap>();
csv.WriteHeader<DataRow>(); // write headers
csv.WriteField(""); // it will be `;` in file
csv.NextRecord();
foreach (var item in _rows)
{
csv.WriteRecord(item); // actual data
csv.WriteField(""); // it will be `;` in file
csv.NextRecord();
}
}
第二种解决方案 - hack,创建新的 属性:
public sealed class DataRowClassMap : ClassMap<DataRow>
{
public DataRowClassMap()
{
Map(m => m.ListingNumber).Ignore();
Map(m => m.FirstName).Index(0).Name("FirstName");
Map(m => m.LastName).Index(1).Name("LastName");
// solution hack
Func<DataRow, string> func = x => "";
Map(x => x.HackForCommaAfterLastColumn).Index(3).Name("").ConvertUsing(func);
}
}