Lorsque j'utilise StreamWriter.WriteLine
, il ne semble rien écrire dans un MemoryStream
.Essayer d'envoyer csv en tant que pièce jointe d'un courrier électronique en C#
- "données" est quelque chose qui est déjà rempli. C'est un objet [] qui inclut des objets avec Name, Date et PhoneNumber.
StreamWriter sw = new StreamWriter(new MemoryStream());
CustomerReport[] customers = (CustomerReport[])data;
foreach (var d in customers)
{
sw.WriteLine($"{d.Name},{d.Date},{d.PhoneNumber}");
}
Attachment attachment = new Attachment(sw.BaseStream, "CustomerReport.csv", "text/csv");
Cependant l'attachement csv
est toujours un csv
vide.
Mise à jour: Je l'ai compris. C'était en fait le MemoryStream()
. Je mets juste mon MemoryStream()
qui dans ce cas est sw.BaseStream.Postion = 0
Voici une version de travail:
StreamWriter sw = new StreamWriter(new MemoryStream());
CustomerReport[] customers = (CustomerReport[])data;
foreach (var d in customers)
{
sw.WriteLine($"{d.Name},{d.Date},{d.PhoneNumber}");
sw.Flush();
}
sw.BaseStream.Position = 0;
Attachment attachment = new Attachment(sw.BaseStream, "CustomerReport.csv", "text/csv");
J'ai vérifié le StreamWriter sw et il ne avoir les caractères dans le tampon char que je veux écrire. Cependant, rien n'est écrit dans BaseStream. – clueless7788
Probablement une faute de frappe dans la question, mais il y a une accolade fermante supplémentaire à la fin de l'appel WriteLine(), ce qui signifie que le code plus bas pourrait ne pas faire partie du bloc ou de la portée que vous pensez. –
Merci. J'ai tapé le code dans la question. Je n'ai pas copié et collé. J'ai corrigé cette erreur. – clueless7788