让FileHelpers 2.0处理带有多余逗号的CSV文件

时间:2012-07-06 13:02:31

标签: c# c#-4.0 csv filehelpers

我目前正在使用FileHelpers库(v2.0.0.0)来解析CSV文件。 CSV文件映射到具有少量公共属性的类,假设有 N 。问题是,默认情况下,FileHelpers似乎无法正确处理用户指定CSV文件超过 N-1 逗号的情况。其余的逗号只会附加到最后一个属性值。

我认为这必须可以通过FileHelpers' attributes进行配置,但我没有看到任何会忽略在记录中没有匹配属性的字段的内容。

我查看了RecordCondition,但使用像ExcludeIfEnds(",")之类的内容看起来如果它以逗号结尾会完全跳过该行,但我只想要它们剥离

可能我唯一的办法是预处理文件并删除任何尾随的逗号,这是完全没法的,但我想知道FileHelpers是否也能做到这一点,也许我只是没有在文档中看到它。

3 个答案:

答案 0 :(得分:4)

只是一个黑客/解决方法的想法:您可以创建一个名为“ExtraCommas”的属性并将其添加到您的类中,以便在那里序列化额外的逗号而不是对象的真实属性......

答案 1 :(得分:0)

如果逗号的数量不同,我认为你运气不好,必须进行后期处理。但是,如果有固定金额,您可以在班级中设置空白字段。

[FieldOrder(5)] 
public string Blank1;

[FieldOrder(6)]
public string Blank2;

这并不是真的咬我,因为我不使用FileHelpers类作为业务类,我将它用作构建业务类的对象。我存储它用于审计。我想有一次我玩弄Blanks私人的领域,不知道结果如何。

答案 2 :(得分:0)

这是您可以使用的自定义方法,它可能不是最佳解决方案,但它将解决最后一个逗号问题。代码可以更加优化,这只是为了让您了解如何解决这类问题。

  int main(){
    StreamReader sr = new StreamReader(@"C:\Users\musab.shaheed\Desktop\csv.csv");
     var lineCount=File.ReadLines(@"C:\Users\musab.shaheed\Desktop\csv.csv").Count();
            for (int i = 0; i < lineCount;i++ ) {

            String fileText = sr.ReadLine();

            fileText=fileText.Substring(0, fileText.Length - 1);


            //store your data in here
            Console.WriteLine(fileText);


            };

            sr.Close();

}