Tentando gravar o conteúdo das pessoas em um arquivo CSV e exportá-lo, no entanto, estou recebendo um erro de compilação e sua falha. o erro é:
cannot convert from 'System.IO.StreamWriter' to 'CsvHelper.ISerializer'
Não sei por que isso está acontecendo, a menos que tenha certeza de que já fiz dessa maneira várias vezes.
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
paraISerializer
?StreamWriter
faz parte do próprio .NET - não pode implementar interfaces de um pacote de terceiros específico.CsvHelper.CsvWriter(TextWriter)
não está no escopo. Verifique se você está obtendo a versão correta do pacote, e essaStreamWriter
é a classe usual (System.IO.StreamWriter
). Use "Ir para definição"CsvWriter
para verificar novamente.CsvWriter
construtor que recebe umaISerializer
e está falhando, pois não há conversão. Deveria ter escolhido oCsvWriter
construtor que leva aTextWriter
, já que oStreamWriter
herda, para que o construtor esteja ausente (por qualquer motivo) ou a resolução de sobrecarga do compilador seja quebrada (um pouco menos provável, mas coisas mais estranhas aconteceram).Respostas:
Houve uma alteração de última hora na versão 13.0.0. Houve muitos problemas com a localização, então o @JoshClose exige que os usuários especifiquem o
CultureInfo
que desejam usar. Agora você precisa incluirCultureInfo
ao criarCsvReader
eCsvWriter
. https://github.com/JoshClose/CsvHelper/issues/1441Nota:
CultureInfo.CurrentCulture
era o padrão nas versões anteriores.Considerar
CultureInfo.InvariantCulture
- Se você controla a escrita e a leitura do arquivo. Dessa forma, funcionará independentemente da cultura que o usuário tenha no computador.CultureInfo.CreateSpecificCulture("en-US")
- Se você precisar trabalhar para uma cultura específica , independente da cultura do usuário.fonte