Excel поврежден при подключении его к MailMessage C # - PullRequest
0 голосов
/ 15 октября 2019

Я создал приложение, которое генерирует файл Excel из DataTable с использованием библиотеки EPPlus. Затем я добавляю экземпляр MemoryStream в приложение. Программа работает нормально, я получаю электронное письмо, но когда я открываю файл, я получаю сообщение об ошибке "Excel не может открыть файл, потому что формат файла или расширение файла недействительно. Убедитесь, что файл не был поврежден и что расширение файла соответствует форматуфайла ". Я перепробовал много вариантов, которые нашел в сети, но никто не помог. Может кто-нибудь знает, как исправить тот или иной способ отправки почтового сообщения с вложениями.

 public void SendMail(DataTable dt)
        {
            using (MemoryStream outputStream = new MemoryStream())
            using (ExcelPackage pck = new ExcelPackage(outputStream))
            {
                ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Sheet");
                ws.Cells.LoadFromDataTable(dt, true);
                pck.Save();          
                SmtpClient client = new SmtpClient("host");
                client.UseDefaultCredentials = false;
                client.Credentials = new NetworkCredential("usarename", "password");

                MailMessage message = new MailMessage("sender@gmail.com", "to@gmail.com");
                message.Body = "File in attachments";             

                Attachment at = new Attachment(outputStream, "FileOutput.xls", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
                message.Attachments.Add(at);
                message.Subject = "Test";
                client.Send(message);            

            }
        }

1 Ответ

0 голосов
/ 15 октября 2019

Попробуйте сбросить поток до начала перед созданием вложения

outputStream.Seek(0,SeekOrigin.Begin);
...