Ich versuche, die E-Mail mit angehängter Excel-Datei zu senden mitSenden Sie die E-Mail mit Datentabelle Microsoft.Office.Interop.Excel mit
using Microsoft.Office.Interop.Excel
und ich meine Datentabelle ändern zu übertreffen und versuchen, die E-Mail mit, dass schicken Datei. Aber sie geben diese Fehler.
Fehler: System.Runtime.InteropServices.COMException: kann nicht auf "My_Data.xls" zugreifen.
Dies ist der Code.
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 = "[email protected]";
credentials.Password = "1234";
smtp.UseDefaultCredentials = true;
smtp.Credentials = credentials;
smtp.Port = 587;
smtp.Send(mm);
}
}
Sie geben mir die Fehlermeldung: System.Runtime.InteropServices.COMException: Kann nicht auf 'My_Data.xls' zugreifen. auf diesem Teil "workbook.SaveAs (" My_Data.xls ",," – Scarlett
das ist Berechtigungen für den Ordner, in dem Sie versuchen, die Datei zu speichern, vielleicht speichern Sie sie in den Temp-Ordner, (vielleicht. 'Path.GetTempPath() + " My_Data.xls "'. Auch nach der SaveAs (...) am besten, um die Arbeitsmappe zu schließen (dh' workbook.Close() ') – Rob
Wow! Wenn ich den Pfad zu Temp ändern, funktioniert es. Interessant! Danke Rob. – Scarlett