Problème avec le contact importation de perspectives différentes versions à travers le code .net

StackOverflow https://stackoverflow.com/questions/7333429

  •  27-10-2019
  •  | 
  •  

Question

J'ai créé le code pour l'importation de contacts Outlook. application créée dans .NET Framework avec la version 4.0 en C #.

code est le suivant -

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);
    }
}

Cette fonction est utilisée pour la lecture des contacts à partir du dossier particulier du contact de perspectives -

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;
}

J'ajouté dll pour cela, est de Microsoft.Office.Interop.Outlook with version 9.2 Description est Microsoft.Office 11.0 Object Library

Il importe contact à partir de la version Outlook 2007, mais
quand j'importer contacts à partir d'Outlook 2010 alors il est pas le contact importateur.

Comment résoudre ce problème?

Était-ce utile?

La solution

Vous travaillez avec des composants de version spécifique MS Office.

Ce que vous devez utiliser un cadre Office spécifique non version MS / bibliothèque tels que:

NetOffice - La meilleure façon d'utiliser Office dans .NET http://netoffice.codeplex.com/

Assemblées .NET Wrapper pour accéder à Microsoft Office, Excel, Word, Outlook, PowerPoint, Access, Project

Avec des caractéristiques telles que:

  • Bureau de l'intégration sans limitation de la version
  • Tous les objets, méthodes, propriétés et événements des versions Office 2000, 2002, 2003, 2007, 2010 sont inclus
  • et sémantiquement identiques Syntaxiquement aux obstacles de déploiement Microsoft Interop assemblées Non, pas d'enregistrement problématique, aucune dépendance, pas d'assemblées Interop, pas besoin de VSTO

Il est un exemple de la façon d'obtenir une liste de contacts Outlook en C # ici: http://netoffice.codeplex.com/wikipage?title=Outlook_Example05

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top