使用FileHelpers处理引号

时间:2011-02-22 10:57:31

标签: csv import quotes filehelpers

我正在使用优秀的FileHelpers库导入许多csv文件,但遇到了问题。我有一个带有这三个示例行的csv文件

id,text,number
120,"good line this one",789
121,""not good" line", 4456
122,,5446

和这个(示例)类

  [IgnoreFirst(1)]
  [IgnoreEmptyLines()]
  [DelimitedRecord(",")]
  public sealed class JOURNAL
  {
    public Int32 ID;

    [FieldQuoted('"', QuoteMode.AlwaysQuoted, MultilineMode.NotAllow)]
    public string TEXT;

    public Int32? NUMBER;
  }

QuoteMode.AlwaysQuoted的问题是ID 122将失败并显示错误:

  

“TEXT”字段不以   QuotedChar在第3行。你可以使用   FieldQuoted(QuoteMode.OptionalForRead)   允许可选的引用字段

切换到QuoteMode.OptionalForRead将失败,ID为121错误:

  

字段TEXT被引用但是   引用char:“不是就在之前   separator(您可以使用[FieldTrim])   避免这个错误)

那么如何处理一个没有引号的空字段的csv和文本中带引号的带引号的文本字段?

1 个答案:

答案 0 :(得分:9)

这看起来像是我们不支持的情况,让我添加一个测试用例并使其在两种模式下都能正常工作,对于第一个我们需要验证语义是否正确的情况,即。如果QuoteMode.AlwaysQuoted可以允许,,或必须是“”,但第二个选项必须工作:) 干杯