Problem beim Importieren von Kontakten aus Outlook einer anderen Version über .net-Code
-
27-10-2019 - |
Frage
Ich habe Code zum Importieren von Kontakten aus Outlook erstellt.Erstellt Anwendung im .net Framework mit Version 4.0 in C #.
Code ist wie folgt -
OutLook._Application outlookObj = new OutLook.Application();
outlookObj.ActiveExplorer();
OutLook.MAPIFolder contactsFolder = (OutLook.MAPIFolder)outlookObj.Session
.GetDefaultFolder(OutLook.OlDefaultFolders.olFolderContacts);
comboDelimiter.Properties.Items.Clear();
if (!comboDelimiter.Properties.Items.Contains("Default"))
{
comboDelimiter.SelectedText = "Default";
comboDelimiter.Properties.Items.Add("Default");
}
//VERIFYING THE CUSTOM FOLDER IN OUT LOOK .
foreach (OutLook.MAPIFolder subFolder in contactsFolder.Folders)
{
if (!comboDelimiter.Properties.Items.Contains(subFolder.Name))
{
comboDelimiter.Properties.Items.Add(subFolder.Name);
}
}
Diese Funktion wird zum Lesen von Kontakten aus dem jeweiligen Ordner des Outlook-Kontakts verwendet -
private DataSet GetContactsFromFolder(string folderName)
{
object missing = System.Reflection.Missing.Value;
DataSet ds = new DataSet();
//create instance of Outlook application and Outlook Contacts folder.
try
{
OutLook.MAPIFolder fldContacts = null;
OutLook._Application outlookObj = new OutLook.Application();
if (folderName == "Default")
{
fldContacts = (OutLook.MAPIFolder)outlookObj.Session
.GetDefaultFolder(OutLook.OlDefaultFolders.olFolderContacts);
}
else
{
OutLook.MAPIFolder contactsFolder = (OutLook.MAPIFolder)outlookObj.Session
.GetDefaultFolder(OutLook.OlDefaultFolders.olFolderContacts);
//VERIFYING THE CUSTOM FOLDER IN OUT LOOK .
foreach (OutLook.MAPIFolder subFolder in contactsFolder.Folders)
{
if (subFolder.Name == folderName)
{
fldContacts = subFolder;
break;
}
}
}
DataTable dt = new DataTable();
for (int i = 0; i < 12; i++)
{
dt.Columns.Add("Col" + i,Type.GetType ("System.String"));
}
foreach (Microsoft.Office.Interop.Outlook._ContactItem contactItem in fldContacts.Items)
{
{
DataRow dr = dt.NewRow();
dr[0] = Convert.ToString(contactItem.FirstName);
dr[1] = Convert.ToString(contactItem.LastName);
dr[2] = Convert.ToString(contactItem.MobileTelephoneNumber);
if (!string.IsNullOrEmpty(contactItem.Email1Address))
dr[3] = contactItem.Email1Address;
else
dr[3] = contactItem.Email2Address;
dr[4] = Convert.ToString(contactItem.HomeAddress);
dr[5] = Convert.ToString(contactItem.BusinessTelephoneNumber);
dr[6] = Convert.ToString(contactItem.HomeTelephoneNumber);
dr[7] = Convert.ToString(contactItem.CompanyName);
dr[8] = Convert.ToString(contactItem.Birthday);
dr[9] = Convert.ToString(contactItem.Anniversary);
dr[10] = Convert.ToString(contactItem.JobTitle);
dr[11] = Convert.ToString(contactItem.HomeFaxNumber);
dt.Rows.Add(dr);
}
}
ds.Tables.Add(dt);
}
catch (System.Exception ex)
{
Console.WriteLine(ex);
}
return ds;
}
Ich habe DLL hinzugefügt, ist von Microsoft.Office.Interop.Outlook with version 9.2
Description
ist Microsoft.Office 11.0 Object Library
Es importiert Kontakte aus der Outlook 2007-Version, aber
Wenn ich einen Kontakt aus Outlook 2010 importiere, wird kein Kontakt importiert.
Wie kann dieses Problem behoben werden?
Lösung
Sie arbeiten mit versionenspezifischen MS Office Interop-Komponenten.
Sie müssen ein nicht versionäres MS Office-Framework / eine MS Office-Bibliothek verwenden, z. B.:
NetOffice - Der einfachste Weg, Office in .NET zu verwenden http://netoffice.codeplex.com/
.NET Wrapper-Assemblys für den Zugriff auf Microsoft Office, Excel, Word, Outlook, PowerPoint, Access, Project
Mit Funktionen wie:
- Office-Integration ohne Versionsbeschränkungen
- Alle Objekte, Methoden, Eigenschaften und Ereignisse der Office-Versionen 2000, 2002, 2003, 2007, 2010 sind enthalten
- Syntaktisch und semantisch identisch mit den Microsoft Interop-Assemblys Keine Bereitstellungshürden, keine problematische Registrierung, keine Abhängigkeiten, keine Interop-Assemblys, keine Notwendigkeit für VSTO
Hier finden Sie ein Beispiel, wie Sie eine Liste von Outlook-Kontakten in C # abrufen können: http://netoffice.codeplex.com/wikipage?title=Outlook_Example05