使用PocketOutlook导入导出联系人

最近写了个小程序,实现将PocketOutlook中联系人导出导出。
实现如下功能:
1,将ppc中联系人导出xml;
2,将xml文件内容导入联系人;
3,清空联系人中的数据。

使用了PocketOutlook.dll 很好用。不过找这个文件花了不少时间。下载点击:http://www.cnblogs.com/Files/vicky8081/pimstore.zip

msdn上的文章:http://www.microsoft.com/china/msdn/library/NetFramework/netcompactframework/COMInterop.mspx?mfr=true

 

 

namespace sy.gdsc.zd.contact
{
    class ContactContent
    {
        public int id = 0;
        public string name = null;              //姓名
        public string duty = null;              //职位
        public string depart = null;            //部门
        public string company = null;           //公司名称
        public string officeNum = null;         //办公电话
        //public string companyAdd = null;        //公司地址
        public string email = null;             //e-mail
        public string mobileNum = null;         //移动电话
        public string file = null;              //文件名  
        public string sort = null;              //种类
    }   

    class ContactAction
    {

               /// <summary>
        /// 通过微软提供的PocketOutlook导出通讯录内容
        /// </summary>
        /// <returns></returns>
        public List<ContactContent> ExportContact(System.Windows.Forms.ProgressBar pbar)
        {
            List<ContactContent> result = new List<ContactContent>();

            ApplicationClass outlookApp;
            outlookApp = new ApplicationClass();
            outlookApp.Logon(234);
            PocketOutlook.Folder contactsFolder =
                outlookApp.GetDefaultFolder(OlDefaultFolders.olFolderContacts);

            PocketOutlook.Items contacts = (PocketOutlook.Items)contactsFolder.Items;

            pbar.Maximum = contacts.Count;
            pbar.Minimum = 0;
            int i = 0;
            foreach (ContactItem item in contacts)
            {
                pbar.Value = i++;
                ContactContent contact = new ContactContent();
                contact.name = item.FirstName;
                contact.duty = item.Title;
                contact.company = item.CompanyName;
                contact.officeNum = item.BusinessTelephoneNumber;
                contact.email = item.Email1Address;
                contact.mobileNum = item.MobileTelephoneNumber;
                contact.file = item.FileAs;
                contact.id = item.oid;
                contact.sort = item.Categories;
                result.Add(contact);
               
            }

            outlookApp.Logoff();
            return result;
        }


        /// <summary>
        /// 将xml转换为contact
        /// </summary>
        /// <returns></returns>
        public List<ContactContent> ImportContact(XmlDocument import, System.Windows.Forms.ProgressBar pbar)
        {
            List<ContactContent> result = new List<ContactContent>();

            pbar.Maximum = import["pi"].ChildNodes.Count;
            pbar.Minimum = 0;
            int i = 0;
            foreach (XmlNode xnf in import["pi"])
            {
                pbar.Value = i++;
                XmlElement xe = (XmlElement)xnf;
                ContactContent contact = new ContactContent();

                contact.name = xe.GetAttribute("firstname");
                contact.duty = xe.GetAttribute("job_title");
                contact.company = xe.GetAttribute("companyname");
                contact.officeNum = xe.GetAttribute("work_phone1");
                contact.email = xe.GetAttribute("email1");
                contact.mobileNum = xe.GetAttribute("mobile_phone");
                contact.file = xe.GetAttribute("fileas");
                contact.id = int.Parse(xe.GetAttribute("oid"));
                contact.sort = xe.GetAttribute("sort");

                result.Add(contact);

            }
         
            return result;
        }

        /// <summary>
        ///将contacts写入联系人
        /// </summary>
        /// <param name="contacts"></param>
        /// <returns></returns>
        public bool WriteAddressList(List<ContactContent> contacts, System.Windows.Forms.ProgressBar pbar)
        {
            bool result = false;
            ApplicationClass outlookApp;

            outlookApp = new ApplicationClass();
            outlookApp.Logon(213);

            PocketOutlook.Folder contactsFolder =
                outlookApp.GetDefaultFolder(OlDefaultFolders.olFolderContacts);
            PocketOutlook.Items items = (PocketOutlook.Items)contactsFolder.Items;

            pbar.Maximum = contacts.Count;
            pbar.Minimum = 0;
          
            try
            {
                for(int i = 0;i < contacts.Count; i++)
                {

                    pbar.Value = i;

                    ContactItem item = (ContactItem)items.Add();

                    item.FirstName = contacts[i].name;
                    item.Title = contacts[i].duty;
                    item.CompanyName = contacts[i].company;
                    item.BusinessTelephoneNumber = contacts[i].officeNum;
                    item.Email1Address = contacts[i].email;
                    item.MobileTelephoneNumber = contacts[i].mobileNum;
                    item.FileAs = contacts[i].file;
                    item.Categories = contacts[i].sort;
                    item.Save();                 
                   
                }
               
            }
            catch (System.Exception )
            {
               
            }
            outlookApp.Logoff();

            return result;
           
        }

        /// <summary>
        /// 根据联系人输入xml格式
        /// </summary>
        /// <param name="contacts"></param>
        /// <returns></returns>
        public XmlDocument OutPutString(List<ContactContent> contacts,System.Windows.Forms.ProgressBar pbar)
        {
            XmlDocument xmlDoc = new XmlDocument();
            XmlDeclaration xmldecl;
            xmldecl = xmlDoc.CreateXmlDeclaration("1.0", "UTF-16", null);
            xmlDoc.AppendChild(xmldecl);


            XmlNode xmlNode = xmlDoc.CreateElement("pi");
            xmlDoc.AppendChild(xmlNode);

            pbar.Maximum = contacts.Count;
            pbar.Minimum = 0;
            for(int i = 0; i<contacts.Count; i++)
            {
                pbar.Value = i;
                XmlNode contact = xmlDoc.CreateElement("contact");
               
                XmlAttribute oid = xmlDoc.CreateAttribute("oid");
                oid.Value = contacts[i].id.ToString();


                XmlAttribute fileas = xmlDoc.CreateAttribute("fileas");
                fileas.Value = contacts[i].file;

                XmlAttribute firstname = xmlDoc.CreateAttribute("firstname");
                firstname.Value = contacts[i].name;

                XmlAttribute companyname = xmlDoc.CreateAttribute("companyname");
                companyname.Value = contacts[i].company;

                XmlAttribute email1 = xmlDoc.CreateAttribute("email1");
                email1.Value = contacts[i].email;

                XmlAttribute mobile_phone = xmlDoc.CreateAttribute("mobile_phone");
                mobile_phone.Value = contacts[i].mobileNum;

                XmlAttribute department = xmlDoc.CreateAttribute("department");
                department.Value = contacts[i].depart;

                XmlAttribute job_title = xmlDoc.CreateAttribute("job_title");
                job_title.Value = contacts[i].duty;

                XmlAttribute work_phone1 = xmlDoc.CreateAttribute("work_phone1");
                work_phone1.Value = contacts[i].officeNum;

                XmlAttribute sort = xmlDoc.CreateAttribute("sort");
                sort.Value = contacts[i].sort;

                contact.Attributes.Append(oid);
                contact.Attributes.Append(fileas);
                contact.Attributes.Append(firstname);
                contact.Attributes.Append(companyname);
                contact.Attributes.Append(email1);
                contact.Attributes.Append(mobile_phone);
                contact.Attributes.Append(department);
                contact.Attributes.Append(job_title);
                contact.Attributes.Append(work_phone1);
                contact.Attributes.Append(sort);

                xmlNode.AppendChild(contact);
            }          

            return xmlDoc;
        }

        public void ClearAllContact(System.Windows.Forms.ProgressBar pbar)
        {

            ApplicationClass outlookApp;

            outlookApp = new ApplicationClass();
            outlookApp.Logon(213);

            PocketOutlook.Folder contactsFolder =
                outlookApp.GetDefaultFolder(OlDefaultFolders.olFolderContacts);
            PocketOutlook.Items items = (PocketOutlook.Items)contactsFolder.Items;

            pbar.Maximum = items.Count;
            pbar.Minimum = 0;
            int j = 0;           
            for (int i = items.Count - 1; i >= 0; i--)
            {
                pbar.Value = j++;
                items.Remove(1);
            }
 
        }
    }
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值