CSVHelper 在读取 csv 之前更改/操作 headers
CSVHelper change/ manipulate headers before reading the csv
我无法控制我们可能获得的 csv 文件,他们有时会在名称中添加额外的“_”或年份,这与我所做的映射不匹配。
尝试过
var config = new CsvConfiguration(cultureInfo)
{
PrepareHeaderForMatch = args => args.Header.Replace("_", " "),
};
config.PrepareHeaderForMatch = args => Regex.Replace(args.Header, @"2021", string.Empty);
List<CSVInvoiceLineDetail> CSVParsedDataList = new();
using TextReader reader = new StreamReader(file.OpenReadStream());
using var csv = new CsvReader(reader, config);
csv.Read();
csv.ReadHeader();
while (csv.Read())
{
CSVParsedDataList.Add(csv.GetRecord<CSVInvoiceLineDetail>());
// Do something with the record.
}
但它不起作用 headers 仍然是原来的样子。谁能指出这里做错了什么?
考虑
var config = new CsvConfiguration(cultureInfo)
{
PrepareHeaderForMatch = args => args.Header.Replace("_", " ").Replace("2021","");,
};
或者,如果您想从 header 中删除所有数字和下划线:
var config = new CsvConfiguration(cultureInfo)
{
PrepareHeaderForMatch = args => Regex.Replace(args.Header, "[0-9_]", "")
};
请注意,这里将下划线替换为空,而不是 space,因此可能需要对声明的 header 属性进行一些调整
我无法控制我们可能获得的 csv 文件,他们有时会在名称中添加额外的“_”或年份,这与我所做的映射不匹配。 尝试过
var config = new CsvConfiguration(cultureInfo)
{
PrepareHeaderForMatch = args => args.Header.Replace("_", " "),
};
config.PrepareHeaderForMatch = args => Regex.Replace(args.Header, @"2021", string.Empty);
List<CSVInvoiceLineDetail> CSVParsedDataList = new();
using TextReader reader = new StreamReader(file.OpenReadStream());
using var csv = new CsvReader(reader, config);
csv.Read();
csv.ReadHeader();
while (csv.Read())
{
CSVParsedDataList.Add(csv.GetRecord<CSVInvoiceLineDetail>());
// Do something with the record.
}
但它不起作用 headers 仍然是原来的样子。谁能指出这里做错了什么?
考虑
var config = new CsvConfiguration(cultureInfo)
{
PrepareHeaderForMatch = args => args.Header.Replace("_", " ").Replace("2021","");,
};
或者,如果您想从 header 中删除所有数字和下划线:
var config = new CsvConfiguration(cultureInfo)
{
PrepareHeaderForMatch = args => Regex.Replace(args.Header, "[0-9_]", "")
};
请注意,这里将下划线替换为空,而不是 space,因此可能需要对声明的 header 属性进行一些调整