使用filehelpers按列名解析CSV文件

时间:2018-11-29 14:28:07

标签: c# csv filehelpers

我想使用filehelpers DLL解析CSV文件。 我希望它使列标题与类中的属性名称匹配。 我认为对于那些没有像列那样命名的属性,我将不得不使用“ FieldCaption”属性。 但这显然仅用于写入CSV文件吗?

如果我必须以与CSV文件中相同的方式排列属性,并且必须包括所有列,那么与仅按数字进行拆分和选择相比,这有什么好处吗?

问候 帕特里克

1 个答案:

答案 0 :(得分:0)

FileHelpers依赖于映射类的概念,该概念要求您为每列指定一个字段(或自动属性),即使您不需要该列中的数据也是如此。因此,您可能有一个类似的映射类:

[DelimitedRecord("|")]
public class Orders
{
    public int OrderID;

    public string NotImportant1;
    public string NotImportant2;
    public string NotImportant3;

    public string CustomerID;

    [FieldConverter(ConverterKind.Date, "ddMMyyyy")]
    public DateTime OrderDate;

    [FieldConverter(ConverterKind.Decimal, ".")] // The decimal separator is .
    public decimal Freight;

    [FieldOptional, FieldArrayLength(0, 100)]
    public string[] I_DONT_CARE_WHAT_COMES_AFTER_THIS;
}

不会自动处理未使用的列。

  

...与仅按数字进行拆分和选择相比,优势在哪里?

这里有一些优点:

  • FileHelpers可让您指定任何平面文件格式,而不仅仅是CSV。
  • 您可以强烈键入字段
  • 您可以提供自己的转换器以处理内容如何映射到值
  • 您可以使用各种属性来修饰字段,以处理文件的特质(引号,修剪,日期格式等)
  • 该类也是程序支持的文件格式的“规范”