مشكلة في استيراد جهة اتصال من إصدار توقعات مختلفة من خلال كود صافي
-
27-10-2019 - |
سؤال
أنا خلقت رمز لاستيراد الاتصال من أوتلوك.إنشاء التطبيق في الإطار الصافي مع الإصدار 4.0 في ج#.
الكود كما يلي -
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);
}
}
يتم استخدام هذه الوظيفة لقراءة جهات الاتصال من مجلد معين من جهة اتصال أوتلوك -
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
هو Microsoft.Office 11.0 Object Library
يستورد الاتصال من إصدار أوتلوك 2007 ولكن
عندما أقوم باستيراد جهة اتصال من أوتلوك 2010 ، فإنه لا يقوم باستيراد جهة اتصال.
كيفية حل هذه المشكلة?
المحلول
كنت تعمل مع نسخة محددة مكونات مايكروسوفت أوفيس إنتيروب.
ما تحتاج إلى استخدامه هو إطار عمل/مكتبة مايكروسوفت أوفيس محددة غير الإصدار مثل:
نيتوفيس - أسهل طريقة لاستخدام مكتب في صافي http://netoffice.codeplex.com/
صافي المجمع التجميعات للوصول إلى مايكروسوفت أوفيس ، إكسل ، وورد ، أوتلوك ، باور بوينت ، أسيس ، بروجيكت
مع ميزات مثل:
- مكتب التكامل دون قيود الإصدار
- جميع الكائنات والأساليب, خصائص وأحداث إصدارات المكتب 2000 ، 2002 ، 2003, 2007, 2010 يتم تضمين
- نحويا و دلاليا متطابقة إلى ميكروسوفت إنتيروب الجمعيات لا عقبات النشر ، لا تسجيل إشكالية ، لا تبعيات ، لا التجميعات إنتيروب ، لا حاجة ل فستو
هناك مثال على كيفية الحصول على قائمة جهات اتصال أوتلوك في ج # هنا:http://netoffice.codeplex.com/wikipage?title=Outlook_Example05