отправка электронной почты с Excel в виде вложения в C # из Datatable - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть дата.Я хочу отправить содержимое таблицы данных в формате Excel и отправить электронное письмо в виде вложения.Я попробовал приведенный ниже код, но он отправляет файл expty excel.

Сначала я преобразовываю данные в потоковый объект и передаю поток методу sendemail с другими параметрами почты.

 private static Stream DataTableToStream(System.Data.DataTable table)
        {
            const string semiColon = ";";

            var ms = new MemoryStream();
            var sw = new StreamWriter(ms);

            foreach (DataColumn column in table.Columns)
            {
                sw.Write(column.ColumnName);
                sw.Write(semiColon);
            }
            sw.Write(Environment.NewLine);
            foreach (DataRow row in table.Rows)
            {
                for (int i = 0; i < table.Columns.Count; i++)
                {
                    sw.Write(row[i].ToString().Replace(semiColon, string.Empty));
                    sw.Write(semiColon);
                }
                sw.Write(Environment.NewLine);
            }
            return ms;
        }

нижекод sendmail

 private const string ExcelContentType = "application/ms-excel";

        private static bool SendMail(MailAddress from, string to, string[] CCAddress, String strSubject, String strBody, Attachment attachment, Stream tableStream)
        {
            try
            {
                const string attchmentName = "Weekly Vendor Report.xlsx";
                SmtpClient client = new SmtpClient();
                client.Host = "mail.lamrc.com";

                System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
                message.From = from;
                message.IsBodyHtml = true;
                message.Subject = strSubject;
                message.Body = strBody;
                message.To.Add(to);

                message.Attachments.Add(new Attachment(tableStream, attchmentName, ExcelContentType));
.......

}

1 Ответ

0 голосов
/ 04 декабря 2018

Используйте EPPlus библиотека для преобразования таблицы данных в Excel и преобразования ее во вложение.

    public static Attachment GetAttachment(DataTable dataTable)
    {
        MemoryStream outputStream = new MemoryStream();
        using (ExcelPackage package = new ExcelPackage(outputStream))
        {
            ExcelWorksheet facilityWorksheet = package.Workbook.Worksheets.Add("sheetName");
            facilityWorksheet.Cells.LoadFromDataTable(dataTable, true);

            package.Save();
        }

        outputStream.Position = 0;
        Attachment attachment = new Attachment(outputStream, "sample.xlsx", "application/vnd.ms-excel");

        retutn attachment;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...