我使用此按钮根据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);
}
答案 0 :(得分:1)
如何在不保存的情况下附加excel文件?
你做不到。我能想到的唯一方法就是让电子邮件的Body包含DataGridView中的数据。
我想每天自动发送一次这封电子邮件,所以在发送之前我无需保存。
我知道的所有开发人员只需将XLS保存到C:\ temp位置,将其作为文件附件发送,最后在发送电子邮件后删除XLS文件。
答案 1 :(得分:0)
使用System.Net.Mail你可以轻松附加你想要的任何文件。因此,当您创建excel文件时,只需将其附加到电子邮件中即可。