带有MemoryStream的EPPlus作为电子邮件附件 - 文件为空

Nat*_*ate 20 .net epplus

我正在构建一个控制台应用程序,将数据移动到excel文件中(使用EPPlus库).我将ExcelPackage保存为MemoryStream,我想将其附加到电子邮件中.但是,当我收到电子邮件时,Excel文件为空 - 0字节.

思考?

        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();
        }
Run Code Online (Sandbox Code Playgroud)

以下是创建电子邮件附件的代码:

Attachment attachment = new Attachment(outputStream, "ECO_exceptions.xlsx", "application/vnd.ms-excel");
Run Code Online (Sandbox Code Playgroud)

Nat*_*ate 33

经过一番搜索,我找到了解决方案.显然我需要在将MemoryStream作为附件传递之前显式设置它的起始位置.以下代码行完成了诀窍:

outputStream.Position = 0;
Run Code Online (Sandbox Code Playgroud)