Ответ 1
После еще нескольких поисков я нашел решение. По-видимому, мне нужно было явно установить начальную позицию MemoryStream, прежде чем передать ее в качестве вложения. Следующая строка кода сделала трюк:
outputStream.Position = 0;
Я создаю консольное приложение, которое перемещает данные в файл excel (используя библиотеку EPPlus). Я сохраняю ExcelPackage как MemoryStream, и я хочу прикрепить его к электронной почте. Однако, когда я получаю письмо, файл Excel пуст - 0 байт.
Мысли?
MemoryStream outputStream = new MemoryStream();
using (ExcelPackage package = new ExcelPackage(outputStream)) {
// export each facility 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();
}
Здесь приведен код для создания вложения электронной почты:
Attachment attachment = new Attachment(outputStream, "ECO_exceptions.xlsx", "application/vnd.ms-excel");
После еще нескольких поисков я нашел решение. По-видимому, мне нужно было явно установить начальную позицию MemoryStream, прежде чем передать ее в качестве вложения. Следующая строка кода сделала трюк:
outputStream.Position = 0;