CSV 引用值,数据内部有换行符
CSV quoted values with line break inside data
此问题特定于 ChoETL CSV reader
举个例子
"Header1","Header2","Header3"
"Value1","Val
ue2","Value3"
(记事本++截图)
- 所有 headers 和值都被引用
- “Value2”中有一个换行符
我一直在使用 ChoETL 选项,但我无法让它工作:
foreach (dynamic e in new
ChoCSVReader(@"test.csv")
.WithFirstLineHeader()
.MayContainEOLInData(true)
.MayHaveQuotedFields()
//been playing with these too
//.QuoteAllFields()
// .ConfigureHeader(c => c.IgnoreColumnsWithEmptyHeader = true)
//.AutoIncrementDuplicateColumnNames()
//.ConfigureHeader(c => c.QuoteAllHeaders = true)
//.IgnoreEmptyLine()
)
{
System.Console.WriteLine(e["Header1"]);
}
这失败了:
Missing 'Header2' field value in CSV file
错误因 reader 配置而异
阅读本文的正确配置是什么?
这是处理其中一种情况的错误(即 header 有引号 - csv2 文本)。应用修复。拿 ChoETL.NETStandard.1.2.1.35-beta1 包试一试。
string csv1 = @"Header1,Header2,Header3
""Value1"",""Val
ue2"",""Value3""";
string csv2 = @"""Header1"",""Header2"",""Header3""
""Value1"",""Val
ue2"",""Value3""";
string csv3 = @"Header1,Header2,Header3
Value1,""Value2"",Value3";
using (var r = ChoCSVReader.LoadText(csv1)
.WithFirstLineHeader()
.MayContainEOLInData(true)
.QuoteAllFields())
r.Print();
using (var r = ChoCSVReader.LoadText(csv2)
.WithFirstLineHeader()
.MayContainEOLInData(true)
.QuoteAllFields())
r.Print();
using (var r = ChoCSVReader.LoadText(csv3)
.WithFirstLineHeader()
.MayContainEOLInData(true)
.QuoteAllFields())
r.Print();
示例 fiddle:https://dotnetfiddle.net/VubCDR
此问题特定于 ChoETL CSV reader
举个例子
"Header1","Header2","Header3"
"Value1","Val
ue2","Value3"
(记事本++截图)
- 所有 headers 和值都被引用
- “Value2”中有一个换行符
我一直在使用 ChoETL 选项,但我无法让它工作:
foreach (dynamic e in new
ChoCSVReader(@"test.csv")
.WithFirstLineHeader()
.MayContainEOLInData(true)
.MayHaveQuotedFields()
//been playing with these too
//.QuoteAllFields()
// .ConfigureHeader(c => c.IgnoreColumnsWithEmptyHeader = true)
//.AutoIncrementDuplicateColumnNames()
//.ConfigureHeader(c => c.QuoteAllHeaders = true)
//.IgnoreEmptyLine()
)
{
System.Console.WriteLine(e["Header1"]);
}
这失败了:
Missing 'Header2' field value in CSV file
错误因 reader 配置而异
阅读本文的正确配置是什么?
这是处理其中一种情况的错误(即 header 有引号 - csv2 文本)。应用修复。拿 ChoETL.NETStandard.1.2.1.35-beta1 包试一试。
string csv1 = @"Header1,Header2,Header3
""Value1"",""Val
ue2"",""Value3""";
string csv2 = @"""Header1"",""Header2"",""Header3""
""Value1"",""Val
ue2"",""Value3""";
string csv3 = @"Header1,Header2,Header3
Value1,""Value2"",Value3";
using (var r = ChoCSVReader.LoadText(csv1)
.WithFirstLineHeader()
.MayContainEOLInData(true)
.QuoteAllFields())
r.Print();
using (var r = ChoCSVReader.LoadText(csv2)
.WithFirstLineHeader()
.MayContainEOLInData(true)
.QuoteAllFields())
r.Print();
using (var r = ChoCSVReader.LoadText(csv3)
.WithFirstLineHeader()
.MayContainEOLInData(true)
.QuoteAllFields())
r.Print();
示例 fiddle:https://dotnetfiddle.net/VubCDR