当我使用StreamWriter.WriteLine
它似乎没有写任何东西给MemoryStream
。试图发送csv作为C#中的电子邮件附件#
- “数据”是以前填充的内容。它是一个包含具有Name,Date和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");
然而csv
附件始终是一个空csv
。
更新: 我明白了。它实际上是MemoryStream()
。 我只是把我的MemoryStream()
在这种情况下是sw.BaseStream.Postion = 0
下面是一个工作版本:
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");
我检查了StreamWriter的SW和它在我想写的字符缓冲区中有字符。但是,没有任何内容写入BaseStream。 – clueless7788
问题中可能有拼写错误,但在WriteLine()调用结束时还有一个额外的大括号,这意味着代码进一步下移可能不是您认为它的块或范围的一部分。 –
谢谢。我在问题中输入了代码。我没有复制和粘贴。我纠正了这个错误。 – clueless7788