【发布时间】:2016-10-04 23:07:24
【问题描述】:
我刚刚开始学习 c#,请问您是否可以帮助我使用下面的代码导出到 excel 中,如下所述:
我有一个子文件夹,其中电子邮件包含对批准请求电子邮件的回复,我需要以这种方式将这些电子邮件导出到 excel 中;
一个单元格中响应电子邮件正文的批准响应以及其他单元格中的响应日期
来自批准请求:一个单元格中的发件人电子邮件,一个单元格中的收件人,一个单元格中的主题,一个单元格中的批准请求电子邮件的日期以及来自电子邮件正文的单元格中电子邮件正文的第一行,其他单元格中的第二行...
一开始我有下面的代码,但我知道这是不对的,因为 xlsx 文件没有填充。请帮助我下面的代码,我问是否可以从正文逐行写入 excel的电子邮件。如果可能的话,我要求提示如何去做。
谢谢!
public static void getEmails()
{
Microsoft.Office.Interop.Outlook.Application app = null;
Microsoft.Office.Interop.Outlook._NameSpace ns = null;
Microsoft.Office.Interop.Outlook.MAPIFolder inboxFolder = null;
Microsoft.Office.Interop.Outlook.MAPIFolder subFolder = null;
string fileTest = "C:\\Users\\Daniel\\Desktop\\test.xlsx";
if (File.Exists(fileTest))
{
File.Delete(fileTest);
}
Excel.Application oApp;
Excel.Workbook oWB;
Excel.Worksheet oSheet;
oApp = new Excel.Application();
oWB = oApp.Workbooks.Add();
oSheet = (Excel.Worksheet)oWB.Worksheets.get_Item(1);
try
{
app = new Microsoft.Office.Interop.Outlook.Application();
ns = app.GetNamespace("MAPI");
ns.Logon("daniel.tou@btrl.ro", "XXXXX", false, true);
inboxFolder = ns.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);
subFolder = inboxFolder.Folders["Octavian"]; //folder.Folders[1]; also works
Console.WriteLine("Folder Name: {0}, EntryId: {1}", subFolder.Name, subFolder.EntryID);
Console.WriteLine("Num Items: {0}", subFolder.Items.Count.ToString());
for (int i = 1; i <= subFolder.Items.Count; i++)
{
Microsoft.Office.Interop.Outlook.MailItem item = (Microsoft.Office.Interop.Outlook.MailItem)subFolder.Items[i];
oSheet.Cells[i, 1] = i.ToString();
oSheet.Cells[i, 2] = item.Subject;
oSheet.Cells[i, 3] = item.SentOn.ToLongDateString();
oSheet.Cells[i, 4] = item.Body.ToString();
}
}
catch (System.Runtime.InteropServices.COMException ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
ns = null;
app = null;
inboxFolder = null;
oWB.SaveAs(fileTest);
oWB.Close();
oApp.Quit();
}
}
}
【问题讨论】:
标签: c# excel email outlook export