2012-10-11 17 views
16

Verileri bir Excel dosyasına (EPPlus kütüphanesi kullanarak) taşıyan bir konsol uygulaması yapıyorum. ExcelPackage'i bir MemoryStream olarak kaydediyorum ve bunu bir e-postaya eklemek istiyorum. Ancak, e-postayı aldığımda, Excel dosyası boş - 0 bayttır.EPPlus with MemoryStream e-posta eki olarak - dosya boş

Düşünceler?

 MemoryStream outputStream = new MemoryStream(); 
     using (ExcelPackage package = new ExcelPackage(outputStream)) { 

       // export each facility's rollup and detail to tabs in Excel (two tabs per facility) 
       ExcelWorksheet facilityWorksheet = package.Workbook.Worksheets.Add(row["facility_id"].ToString()); 
       ExcelWorksheet facilityDetail = package.Workbook.Worksheets.Add(row["facility_id"].ToString() + "-detail"); 

       facilityWorksheet.Cells.LoadFromDataTable(rollupData, true); 
       facilityDetail.Cells.LoadFromDataTable(rawExceptions, true); 

       package.Save(); 
     } 

İşte e-posta eki oluşturmak için kod:

Attachment attachment = new Attachment(outputStream, "ECO_exceptions.xlsx", "application/vnd.ms-excel"); 
+1

Teşekkür ederim, yardımcı gönderi, çok fazla sorun yoksa lütfen düzenleyin, böylece package.Save(); KULLANIM bölümünde. –

cevap

24

biraz daha arama yaptıktan sonra çözüm buldum. Görünüşe göre ben bir ek olarak geçmeden önce MemoryStream'in başlangıç ​​pozisyonunu açıkça belirlemem gerekiyordu. Aşağıdaki kod satırı, hile:

outputStream.Position = 0; 
+0

Günümü kurtardım. Çok teşekkürler! Paylaşmak için –

+0

tyvm :) +1 – Christos