使用 Microsoft.Office.Interop.Excel 发送带有数据表的电子邮件
Send the email with datatable using Microsoft.Office.Interop.Excel
我正在尝试使用
发送附有 excel 文件的电子邮件
using Microsoft.Office.Interop.Excel
并且我将数据表更改为 excel 并尝试发送包含该文件的电子邮件。但是他们给出了错误。
错误:System.Runtime.InteropServices.COMException:无法访问 'My_Data.xls'。
这是代码。
void SendEmail()
{
//get the data from database
DataTable data = GetData();
// Create an Excel object and add workbook...
Excel.ApplicationClass excel = new Excel.ApplicationClass();
Excel.Workbook workbook = excel.Application.Workbooks.Add(true);
// Add column headings
int iCol = 0;
foreach (DataColumn c in data.Columns)
{
iCol++;
excel.Cells[1, iCol] = c.ColumnName;
}
// for each row of data...
int iRow = 0;
foreach (DataRow r in data.Rows)
{
iRow++;
// add each row's cell data...
iCol = 0;
foreach (DataColumn c in data.Columns)
{
iCol++;
excel.Cells[iRow + 1, iCol] = r[c.ColumnName];
}
}
// Global missing reference for objects we are not defining...
object missing = System.Reflection.Missing.Value;
// If wanting to Save the workbook...
workbook.SaveAs("My_Data.xls",
Excel.XlFileFormat.xlOpenXMLWorkbook, missing, missing,
false, false, Excel.XlSaveAsAccessMode.xlNoChange,
missing, missing, missing, missing, missing);
String from = "aa.gmail.com";
String to = "bb.gmail.com";
using (MailMessage mm = new MailMessage(from, to))
{
SmtpClient smtp = new SmtpClient();
mm.Subject = "List";
//I have no idea for this part
mm.Attachments.Add("My_Data.xls");
mm.IsBodyHtml = true;
smtp.Host = "smtp.gmail.com";
smtp.EnableSsl = true;
System.Net.NetworkCredential credentials = new System.Net.NetworkCredential();
credentials.UserName = "aa@gmail.com";
credentials.Password = "1234";
smtp.UseDefaultCredentials = true;
smtp.Credentials = credentials;
smtp.Port = 587;
smtp.Send(mm);
}
}
尝试保存您的工作簿,然后 open/attach:
workbook.SaveAs(@"path\to\workbook.xlsx");
workbook.Close();
mailObject.Attachments.Add(@"path\to\workbook.xlsx");
需要创建附件项,尝试替换
mm.Attachments.Add(@"My_Data.xls");
和
mm.Attachments.Add(new Attachment(@"My_Data.xls"));
我正在尝试使用
发送附有 excel 文件的电子邮件using Microsoft.Office.Interop.Excel
并且我将数据表更改为 excel 并尝试发送包含该文件的电子邮件。但是他们给出了错误。
错误:System.Runtime.InteropServices.COMException:无法访问 'My_Data.xls'。
这是代码。
void SendEmail()
{
//get the data from database
DataTable data = GetData();
// Create an Excel object and add workbook...
Excel.ApplicationClass excel = new Excel.ApplicationClass();
Excel.Workbook workbook = excel.Application.Workbooks.Add(true);
// Add column headings
int iCol = 0;
foreach (DataColumn c in data.Columns)
{
iCol++;
excel.Cells[1, iCol] = c.ColumnName;
}
// for each row of data...
int iRow = 0;
foreach (DataRow r in data.Rows)
{
iRow++;
// add each row's cell data...
iCol = 0;
foreach (DataColumn c in data.Columns)
{
iCol++;
excel.Cells[iRow + 1, iCol] = r[c.ColumnName];
}
}
// Global missing reference for objects we are not defining...
object missing = System.Reflection.Missing.Value;
// If wanting to Save the workbook...
workbook.SaveAs("My_Data.xls",
Excel.XlFileFormat.xlOpenXMLWorkbook, missing, missing,
false, false, Excel.XlSaveAsAccessMode.xlNoChange,
missing, missing, missing, missing, missing);
String from = "aa.gmail.com";
String to = "bb.gmail.com";
using (MailMessage mm = new MailMessage(from, to))
{
SmtpClient smtp = new SmtpClient();
mm.Subject = "List";
//I have no idea for this part
mm.Attachments.Add("My_Data.xls");
mm.IsBodyHtml = true;
smtp.Host = "smtp.gmail.com";
smtp.EnableSsl = true;
System.Net.NetworkCredential credentials = new System.Net.NetworkCredential();
credentials.UserName = "aa@gmail.com";
credentials.Password = "1234";
smtp.UseDefaultCredentials = true;
smtp.Credentials = credentials;
smtp.Port = 587;
smtp.Send(mm);
}
}
尝试保存您的工作簿,然后 open/attach:
workbook.SaveAs(@"path\to\workbook.xlsx");
workbook.Close();
mailObject.Attachments.Add(@"path\to\workbook.xlsx");
需要创建附件项,尝试替换
mm.Attachments.Add(@"My_Data.xls");
和
mm.Attachments.Add(new Attachment(@"My_Data.xls"));