1

Outlookから連絡先をインポートするためのコードを作成しました。C#のバージョン4.0を使用して.netFrameworkでアプリケーションを作成しました。

コードは次のとおりです-

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

この関数は、Outlookの連絡先の特定のフォルダから連絡先を読み取るために使用されます-

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

Microsoft.Office.Interop.Outlook with version 9.2 Descriptionこのためにdllを追加しました。Microsoft.Office 11.0 Object Library

Outlook 2007バージョンから連絡
先をインポートしますが、Outlook 2010から連絡先をインポートする場合、連絡先をインポートしていません。

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

3

バージョン固有のMSOffice相互運用機能コンポーネントを使用しています。

使用する必要があるのは、次のようなバージョン固有ではないMSOfficeフレームワーク/ライブラリです。

NetOffice-.NETでOfficeを使用する最も簡単な方法 http://netoffice.codeplex.com/

Microsoft Office、Excel、Word、Outlook、PowerPoint、Access、Projectにアクセスするための.NETラッパーアセンブリ

次のような機能を備えています。

  • バージョン制限のないOffice統合
  • Officeバージョン2000、2002、2003、2007、2010のすべてのオブジェクト、メソッド、プロパティ、およびイベント含まれています
  • 構文的および意味的にMicrosoft相互運用機能アセンブリと同一展開のハードル、問題のある登録、依存関係、相互運用機能アセンブリ、VSTOの必要はありません

C# でOutlookの連絡先のリストを取得する方法の例は次のとおりです:http: //netoffice.codeplex.com/wikipage?title = Outlook_Example05

于 2011-09-07T12:00:27.340 に答える