6

我有一个 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 字符串并返回值列表,或者是否有任何好的库可以做到这一点?

4

1 回答 1

4

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

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

编辑:更新的链接。原件存档在这里

于 2012-10-31T15:55:48.987 回答