C# Outlook新电子邮件到Excel行
我想创建一个C#Console应用程序(或者一个服务-还不知道如何开发服务),它可以: 1) 知道何时在Inbox>LOTALogs文件夹中收到新电子邮件。此电子邮件由移动应用程序发送,包括附件和客户遇到的一些问题 2) 获取新的电子邮件内容(以逗号分隔),解析内容并将其附加到已设置列的Excel工作表中 我设法创造了: 1) 解析器:C# Outlook新电子邮件到Excel行,c#,excel,email,outlook,C#,Excel,Email,Outlook,我想创建一个C#Console应用程序(或者一个服务-还不知道如何开发服务),它可以: 1) 知道何时在Inbox>LOTALogs文件夹中收到新电子邮件。此电子邮件由移动应用程序发送,包括附件和客户遇到的一些问题 2) 获取新的电子邮件内容(以逗号分隔),解析内容并将其附加到已设置列的Excel工作表中 我设法创造了: 1) 解析器: public static string[] emailContentsArray() { string content = "
public static string[] emailContentsArray()
{
string content = "Username = Customer1,User ID = 362592,Unit ID = 805618,Date = Mar 12, 2017,Device = Android LGE LG-H990,OS version = 7.0 (API 24),App version = 1.0.0.56,Description = some description,Message = some message";
string[] contentArray = content.Split(',');
// Case where date format includes another comma
if (contentArray.Length > 10)
{
// Parsing headers
contentArray[0] = contentArray[0].Substring(11);
contentArray[1] = contentArray[1].Substring(10);
contentArray[2] = contentArray[2].Substring(10);
contentArray[3] = contentArray[3].Substring(7) + ", " + contentArray[4].Substring(1);
contentArray[4] = contentArray[5].Substring(9);
contentArray[5] = contentArray[6].Substring(13);
contentArray[6] = contentArray[7].Substring(14);
contentArray[7] = contentArray[8].Substring(14);
contentArray[8] = contentArray[9].Substring(10);
contentArray[9] = null;
for (int i = 0; i < contentArray.Length; i++)
{
Console.Write(contentArray[i] + ",");
}
}
//else
//{
//}
return contentArray;
}
3) 打开并打印电子表格的内容:
Excel.Application xlApp = new Excel.Application();
string path = "C:\\SomeUser\\BugReports";
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@path);
Excel.Worksheet xlWorksheet = xlWorkbook.Sheets[1];
Excel.Range xlRange = xlWorksheet.UsedRange;
for (int i = 1; i <= xlRange.Row + xlRange.Rows.Count - 1; i++)
{
for (int j = 1; j <= xlRange.Column + xlRange.Columns.Count - 1; j++)
{
if (j == 1)
Console.Write("\r\n");
if (xlRange.Cells[i, j] != null && xlRange.Cells[i, j].Value2 != null)
Console.Write(xlRange.Cells[i, j].Value2.ToString() + "\t");
}
}
xlWorkbook.Save();
xlWorkbook.Close();
xlApp.Quit();
Console.ReadLine();
3) 获取电子邮件内容并将其附加到电子表格中
4) 我应该将其创建为Windows服务吗
PS-我不是一个开发人员,只是在代码上胡乱摆弄,尽可能地提高效率。我不想在看到技术解决方案时手动填写此电子表格。如果您对提高代码效率有任何建议,请发表意见,并以不同的方式对其进行建模。在我看来很可靠。我不想使用这项服务,但这在很大程度上取决于你的用户。除非你的客户真的想在整个过程中“视而不见”,否则这会增加很多不必要的复杂性 至于附加到电子表格
int lastRow = xlWorksheet.UsedRange.Rows;
Excel.Range xlRange = xlWorksheet.Cells[lastRow + 1, 1];
xlRange.Value = stuffFromInbox;
如果只将一个项目添加到电子表格中,这将很好。对于电子表格的大规模读/写操作(如“打开并打印电子表格的内容”),将整个范围的值
或值2
读入对象[,]
,效率会更高。然后遍历本地数组
Console.WriteLine(logFolder.Items[1].Body);
int lastRow = xlWorksheet.UsedRange.Rows;
Excel.Range xlRange = xlWorksheet.Cells[lastRow + 1, 1];
xlRange.Value = stuffFromInbox;