我正在尝试使用精彩的FileHelpers库从地狱解析CSV文件。
它无法处理表格的一行:
"TOYS R"" US"," INC.""",fld2,fld3,"<numberThousands>","<numberThousands>","<numberThousands>",fld7,
FileHelper非常擅长处理“千种”格式的数字字段(使用自定义格式化程序),即使用引号,尾随逗号等包装,但它会导致第一个字段出现问题。
"TOYS R"" US"," INC.""",fld2,...
此字段包括嵌套引号和嵌套逗号。 FileHelper不知道如何处理它并将其拆分为两个单独的字段,这会导致抛出异常。
有没有推荐的方法来解决这个问题?
答案 0 :(得分:6)
首先,您需要选择引用所有字段。
[DelimitedRecord(",")]
public class contactTemplate
{
[FieldQuoted('"', QuoteMode.OptionalForBoth)]
public string CompanyName;
[FieldQuoted('"', QuoteMode.OptionalForBoth)]
public string fld2;
// etc...
}
然后,您需要在BeforeReadRecord
事件中使用其他内容(例如,单引号)替换转义的分隔符。
var engine = new FileHelperEngine<MyFileHelpersSpec>();
engine.BeforeReadRecord += (sender, args) =>
args.RecordLine = args.RecordLine.Replace(@"""", "'");