2011-08-19 36 views
0

我面临工作中的问题,因为我们有一个销售团队,他们将联系人存储在Outlook中,并且不总是使用CRM,我们需要这些联系人来帮助您分析销售情况。使用C#将Outlook联系人变为CSV

现在要尽量避免强迫销售团队使用CRM或手动导出他们的联系人我正在寻找一种可能的方式来从编程中从Outlook中提取他们的联系人并创建一个可以通过电子邮件发送到总部的CSV文件,然后使用Perl脚本添加到数据库中。

我有办法做这个部分的想法,即我可以使程序作为定时任务运行,每天做它并存储一个小的SQLLite数据库文件与程序,以确保只有新的联系人被添加到CSV每次都通过电子邮件发送。

我现在遇到的问题是我发现很难找到有关如何使用C#访问联系人的体面信息。我已经看到一些基于使用Microsoft.Office.Interlop.Outlook namespace的信息,但没有更多。

如果任何人都可以指向某个位置,在此位置某人尝试了类似的东西,以便我可以看到它是如何完成的,然后创建我的定制程序。

预先感谢您的任何帮助

回答

3

如果要访问Outlook数据(例如联系人),你需要一个COM引用添加到Microsoft Outlook中x.x中对象库。

之后,您可以创建Outlook应用程序对象的实例:

Microsoft.Office.Interop.Outlook.Application outlook; 
outlook = new Microsoft.Office.Interop.Outlook.Application(); 

你可以得到联系人的集合以下列方式:

Microsoft.Office.Interop.Outlook.MAPIFolder folder = 
    outlook.GetNamespace("MAPI") 
     .GetDefaultFolder(OlDefaultFolders.olFolderContacts); 
IEnumerable<ContactItem> contacts = folder.Items.OfType<ContactItem>(); 

可以使用LINQ然后查询这个集合到对象:

var query = from contact in contacts 
      where contact.Email1Address != null 
      select contact; 

Stefan Cruysbergs创建了OutlookProvider组件,它充当Outlook应用程序对象的包装器。您可以使用LINQ查询此提供程序并检索数据(如联系人)。

他在这里有它的一个完整的解释:

http://www.scip.be/index.php?Page=ArticlesNET05&Lang=NL

你可以在这里下载他的组件:

http://www.scip.be/index.php?Page=DownloadNETOfficeItems&Lang=NL

研究他的代码。它应该足以让你开始。

+0

因此Outlook有一种通过UI获取csv的方法。您是否知道调用该代码而不是手动获取联系人并完成工作的方法? –