Intento escribir el contenido de las personas en un archivo CSV y luego exportarlo, sin embargo, recibo un error de compilación y falla. el error es:
cannot convert from 'System.IO.StreamWriter' to 'CsvHelper.ISerializer'
No estoy seguro de por qué sucede esto a menos que esté seguro de que lo he hecho de esta manera muchas veces.
private void ExportAsCSV()
{
using (var memoryStream = new MemoryStream())
{
using (var writer = new StreamWriter(memoryStream))
{
using (var csv = new CsvHelper.CsvWriter(writer))
{
csv.WriteRecords(people);
}
var arr = memoryStream.ToArray();
js.SaveAs("people.csv",arr);
}
}
}
StreamWriter
aISerializer
?StreamWriter
es parte de .NET en sí mismo: no puede implementar interfaces desde un paquete de terceros específico.CsvHelper.CsvWriter(TextWriter)
que no está en el alcance. Verifique que esté obteniendo la versión correcta del paquete, y esaStreamWriter
es la clase habitual (System.IO.StreamWriter
). Use "Ir a definición"CsvWriter
para verificar dos veces.CsvWriter
constructor que toma unISerializer
, y falla ya que no hay conversión. Debería haber elegido elCsvWriter
constructor que toma unTextWriter
, ya queStreamWriter
hereda de eso, por lo que falta ese constructor (por cualquier razón) o la resolución de sobrecarga del compilador está rota (un poco menos probable, pero han sucedido cosas más extrañas).Respuestas:
Hubo un cambio importante con la versión 13.0.0. Ha habido muchos problemas con la localización, por lo que @JoshClose requiere que los usuarios especifiquen lo
CultureInfo
que desean usar. Ahora debe incluirCultureInfo
al crearCsvReader
yCsvWriter
. https://github.com/JoshClose/CsvHelper/issues/1441Nota:
CultureInfo.CurrentCulture
era el valor predeterminado en versiones anteriores.Considerar
CultureInfo.InvariantCulture
- Si controla tanto la escritura como la lectura del archivo. De esa manera funcionará sin importar la cultura que tenga el usuario en su computadora.CultureInfo.CreateSpecificCulture("en-US")
- Si necesita que funcione para una cultura particular , independiente de la cultura del usuario.fuente