-4

我想在网格视图中将 Outlook 的联系人转换为 C# 表单。我用的是微软outlook 12.0 Object Library 9.3版本。当单击 getcontact 按钮时,我试图让联系人显示在 gridview 中。

代码粘贴在下面;请检查并帮助我解决问题。

   private void button1_Click(object sender, EventArgs e)
        {
            GetContacts();
        }
                public DataSet GetContacts()
                {
                    DataSet ds = new DataSet();
                    ds.Tables.Add("Contacts");
                    ds.Tables[0].Columns.Add("Email");
                    ds.Tables[0].Columns.Add("FirstName");
                    ds.Tables[0].Columns.Add("LastName");

                Microsoft.Office.Interop.Outlook.Items OutlookItems;
                Microsoft.Office.Interop.Outlook.Application outlookObj;
                MAPIFolder Folder_Contacts;

                outlookObj = new Microsoft.Office.Interop.Outlook.Application();
                Folder_Contacts =
    (MAPIFolder)outlookObj.Session.GetDefaultFolder(
    OlDefaultFolders.olFolderContacts);
                OutlookItems = Folder_Contacts.Items;

                for (int i = 0; i < OutlookItems.Count; i++)
                {
                    Microsoft.Office.Interop.Outlook.ContactItem contact =
    (Microsoft.Office.Interop.Outlook.ContactItem)OutlookItems[i + 1];
                    DataRow dr = ds.Tables[0].NewRow();
                    dr[0] = contact.Email1Address;
                    dr[1] = contact.FirstName;
                    dr[2] = contact.LastName;

                    ds.Tables[0].Rows.Add(dr);
                    dataGridView1.DataSource = dr;
                    richTextBox1.Text = dr.ToString();
                }

                dataGridView1.Show();
                return ds;
            }
4

1 回答 1

0

我已经尝试使用下面提到的代码将数据从 Outlook 获取到 gridview 中的 c# 桌面应用程序...我为此使用了上面提到的 API,并获得了在您的系统上配置的 Outlook 电子邮件地址!代码粘贴在下面。使用的 API 在 Outlook 2007 和 2003 中运行良好...但对于 Outlook 2010...建议使用其他 API!

代码粘贴在下面。

private void button1_Click(object sender, EventArgs e)
    {

        fetchOutlookContacts();
    }

    public void fetchOutlookContacts()
    {


        Microsoft.Office.Interop.Outlook.Items OutlookItems;
        Microsoft.Office.Interop.Outlook.Application outlookObj;
        MAPIFolder Folder_Contacts;

        outlookObj = new Microsoft.Office.Interop.Outlook.Application();
        Folder_Contacts = (MAPIFolder)outlookObj.Session.GetDefaultFolder(OlDefaultFolders.olFolderContacts);
        OutlookItems = Folder_Contacts.Items;

        DataTable dt = new DataTable();
        dt.Columns.Add("Email Address");

        for (int i = 0; i < OutlookItems.Count; i++)
        {
            Microsoft.Office.Interop.Outlook.ContactItem contact = (Microsoft.Office.Interop.Outlook.ContactItem)OutlookItems[i + 1];
            dt.Rows.Add(new object[] { contact.Email1Address });
            dataGridView1.DataSource = dt;
        }
        dataGridView1.Show();

    }
于 2013-06-13T09:28:49.943 回答