如何通过C#发送Excel文件?

时间:2015-07-23 12:45:13

标签: c#

我使用此按钮根据DataGridView创建Excel:

 private void exportbutton_Click(object sender, EventArgs e){

        if (mesakemGrid.Rows.Count > 0)
        {
            Excel._Application XcelApp = new Excel.Application();
            XcelApp.Application.Workbooks.Add(Type.Missing);

            for (int i = 1; i < mesakemGrid.Columns.Count + 1; i++)
            {
                XcelApp.Cells[1, i] = mesakemGrid.Columns[i - 1].HeaderText;
                Excel.Borders border = XcelApp.Cells[1, i].Borders;
                border.LineStyle = Excel.XlLineStyle.xlContinuous;
                border.Weight = 2d;
            }

            for (int i = 0; i < mesakemGrid.Rows.Count; i++)
            {
                for (int j = 0; j < mesakemGrid.Columns.Count; j++)
                {
                    Excel.Borders border = XcelApp.Cells[i + 2, j + 1].Borders;

                    border.LineStyle = Excel.XlLineStyle.xlContinuous;
                    border.Weight = 2d;
                    XcelApp.Cells[i + 2, j + 1] = mesakemGrid.Rows[i].Cells[j].Value.ToString();
                }
            }
            XcelApp.Columns.AutoFit();
            XcelApp.Visible = true;
        }

    }

我想将此Excel文件发送到电子邮件地址。可能吗? 我在一些指南中看到了这种方法,但它需要一个附件,我不知道是否可以将Excel._Application转换为附件。

       public void send(System.Net.Mail.Attachment attachment)
    {
        MailMessage mail = new MailMessage();
        SmtpClient SmtpServer = new SmtpClient("SMTP_INFO");
        mail.From = new MailAddress("YOUR_EMAIL@XXX.com");
        mail.To.Add("TO_ADDRESS@XXX.COM");
        mail.Subject = "THIS IS THE SUBJECT";
        mail.Body = "THIS IS THE BODY";
        attachment = new System.Net.Mail.Attachment(@"C:\EXCEL_FILE.XLS");
        mail.Attachments.Add(attachment);
        SmtpServer.Port = 587;
        SmtpServer.Credentials = new System.Net.NetworkCredential("USERNAME", "PASSWORD");
        SmtpServer.EnableSsl = true;
        SmtpServer.Send(mail);
    }

2 个答案:

答案 0 :(得分:1)

  

如何在不保存的情况下附加excel文件?

你做不到。我能想到的唯一方法就是让电子邮件的Body包含DataGridView中的数据。

  

我想每天自动发送一次这封电子邮件,所以在发送之前我无需保存。

我知道的所有开发人员只需将XLS保存到C:\ temp位置,将其作为文件附件发送,最后在发送电子邮件后删除XLS文件。

答案 1 :(得分:0)

使用System.Net.Mail你可以轻松附加你想要的任何文件。因此,当您创建excel文件时,只需将其附加到电子邮件中即可。