當我使用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