我有一个正在从另一个系统导出的CSV文件,由此列顺序和定义可能会更改。我发现FileHelpers非常适合读取csv文件,但是除非您在编译应用程序之前了解列的顺序,否则您似乎无法使用它。我想知道是否有可能以非类型化方式使用FileHelpers。目前,我正在使用它来读取文件,但随后我要手动执行其他所有操作,因此我有一个课:

[DelimitedRecord(",")]
public class CSVRow
{
    public string Content { get; set; }
}

这意味着每一行都在Content内,这很好,因为我随后将行拆分了,等等,但是由于文件中固有的逗号,我现在遇到了这种方法的问题,所以一行可能是:
"something",,,,0,,1,,"something else","","",,,"something, else"

我对该字符串的逗号进行简单的拆分不起作用,因为“something,else”中有一个逗号,该逗号被拆分了。显然,在这里像FileHelpers这样的地方非常有用,它可以解析这些值并考虑引号。因此,有可能以这种方式使用FileHelpers,而不必知道已知的列定义,或者至少能够将其传递给csv字符串并获取值列表,或者是否有任何好的库做到这一点?

最佳答案

如果您知道(或推断出)运行时各列的顺序和定义,则可以使用FileHelpers' RunTime records

否则,会有很多关于CSV库的问题,例如Reading CSV files in C#

编辑:更新的链接。原始文件已存档here

关于c# - 使用不带类型的FileHelpers,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13161749/

10-09 06:05