Je suis en train d'envoyer l'e-mail avec fichier Excel joint à l'aideEnvoyer l'e-mail avec l'aide datatable Microsoft.Office.Interop.Excel
using Microsoft.Office.Interop.Excel
et je changer mon datatable d'exceller et d'essayer d'envoyer l'e-mail avec cette fichier. Mais ils donnent ces erreurs.
Erreur: System.Runtime.InteropServices.COMException: Impossible d'accéder à 'My_Data.xls'.
Ceci est le 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);
}
}
Ils me donnent le message d'erreur: System.Runtime.InteropServices.COMException: Impossible d'accéder à 'My_Data.xls'. sur cette partie "workbook.SaveAs (" My_Data.xls ",," – Scarlett
c'est autorisations sur le dossier où vous essayez d'enregistrer le fichier, peut-être l'enregistrer dans le dossier temp, (peut-être. 'Path.GetTempPath() + " My_Data.xls "" .Aussi après le SaveAs (...) mieux pour fermer le classeur (ie 'workbook.Close()') – Rob
Wow! Lorsque je change le chemin de la température, cela fonctionne.Intéressant! Merci Rob. – Scarlett