Valores con salto de línea dentro de los datos entre comillas en formato CSV.
Esta pregunta es específica para el lector CSV de ChoETL.
Toma este ejemplo:
csv
“Header1″,”Header2″,”Header3”
“Value1″,”Val
ue2″,”Value3”
(Captura de pantalla de Notepad++)
Todos los encabezados y valores están entre comillas.
Hay un salto de línea en “Value2”.
He estado probando opciones de ChoETL, pero no puedo hacer que funcione:
foreach (dynamic e in new ChoCSVReader(@"test.csv")
.WithFirstLineHeader()
.MayContainEOLInData(true)
.MayHaveQuotedFields()
//he estado probando con estas opciones también
//.QuoteAllFields()
// .ConfigureHeader(c => c.IgnoreColumnsWithEmptyHeader = true)
//.AutoIncrementDuplicateColumnNames()
//.ConfigureHeader(c => c.QuoteAllHeaders = true)
//.IgnoreEmptyLine()
)
{
System.Console.WriteLine(e["Header1"]);
}
Esto falla con:
Missing ‘Header2’ field value in CSV file
El error varía según la configuración del lector.
¿Cuál es la configuración correcta para leer este texto?
davy.ai
Para leer correctamente este archivo CSV usando ChoETL, se necesita la siguiente configuración:
Explicación de las opciones de configuración:
WithFirstLineHeader()
especifica que la primera línea del archivo CSV debe tratarse como encabezados de columnas.MayContainEOLInData(true)
permite que haya saltos de línea dentro de un valor de campo.MayHaveQuotedFields()
especifica que los campos pueden estar encerrados entre comillas.IgnoreBlankLine
se utiliza para ignorar las líneas en blanco en el archivo CSV.ThrowAndStopOnMissingField
se establece en false para permitir columnas faltantes en el archivo CSV.TrimHeaders
se utiliza para eliminar los espacios en blanco de los encabezados.AllowNewLineInEnclosedFieldValues
se utiliza para especificar que los campos encerrados pueden contener saltos de línea.