日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Office文档模型深入---Outlook文档模型与开发实战(1)

發(fā)布時(shí)間:2023/12/13 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Office文档模型深入---Outlook文档模型与开发实战(1) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
簡(jiǎn)介?? 本篇為Office文檔模型深入系列第4篇,原計(jì)劃是Excel的圖表,之后是Word,因?yàn)轫?xiàng)目轉(zhuǎn)手需要總結(jié)Outlook,先改變下順序,后面的內(nèi)容會(huì)慢慢補(bǔ)上。本篇為Outlook子系列的第一篇,主要介紹下outlook命名空間下個(gè)各個(gè)主要頂級(jí)類(lèi),包括他們的功能定位和一些常用的方法,可以實(shí)現(xiàn)的任務(wù)。另外針對(duì)之前大家對(duì)excel的反饋對(duì)Office PIA再做一些介紹。

?

?一. PIA簡(jiǎn)介與獲取

Office原本提供的接口操作是基于COM的,PIA(Primary Interop Assemblies,主互操作程序集)提供以托管方式來(lái)操作office對(duì)象模型,換句話(huà)說(shuō),PIA提供了 .Net對(duì)office對(duì)象的編程操作。PIA是系統(tǒng)中Office對(duì)象對(duì)外的接口,所以也不要想只要有excel.dll就可以不裝Excel了....

PIA針對(duì)不同的office版本也有相應(yīng)的版本,不同的PIA之間不兼容現(xiàn)象很?chē)?yán)重,在部署時(shí)候根據(jù)客戶(hù)機(jī)的Office版本安裝相應(yīng)的PIA是很有必要的,剛開(kāi)始接觸Excel操作時(shí)候本機(jī)上的Excel導(dǎo)入模塊工作正常,一到客戶(hù)機(jī)上根本不能工作就是這個(gè)問(wèn)題,關(guān)于他們的兼容性上的問(wèn)題,可以參見(jiàn)http://go.microsoft.com/fwlink/?LinkId=30833,這里面列舉了一部分可能遇到的問(wèn)題。

PIA可以字節(jié)從Microsoft上下載:

2010版的下載地址:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=938fe8ad-583b-4bd7-a345-23250dc15855

2003版的下載地址:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=3c9a983a-ac14-4125-8ba0-d36d67e0f4ad?

? 因?yàn)楸緳C(jī)環(huán)境,本章實(shí)例采用2010版,后面提供的實(shí)例也不保證office2010意外版本工作正常,不過(guò)與其他版本在接口上相差不大,對(duì)本文不會(huì)產(chǎn)生影響。


?二. 主要頂級(jí)類(lèi)介紹

  安裝完P(guān)IA之后,首先在項(xiàng)目中引用Microsoft.Office.Interop.Outlook,之后可以使用以下類(lèi):

?

? 1.Application

    與Excel相同,Application代表Outlook主應(yīng)用程序,是Outlook中最高等級(jí)的類(lèi),提供了對(duì)Outlook程序的操作。這個(gè)類(lèi)具有的重要成員如下:

    CreateItem方法: ?用來(lái)創(chuàng)建電子郵件,約會(huì)等。

    Exploers屬性:  用來(lái)在Outlook程序中顯示指定內(nèi)容。?

    Inspectprs屬性: 用來(lái)訪(fǎng)問(wèn)單電子郵件,約會(huì)等單個(gè)項(xiàng)。?

    下面展示一個(gè)具體而微的Outlook項(xiàng)目中的HelloWorld:

2??? ? ? ? ? ?Outlook.Application?thisApp?=new?Outlook.ApplicationClass();
3?????????????MailItem?mi=(MailItem)thisApp.CreateItem(OlItemType.olMailItem);
4?????????????mi.Subject?=?"This?is?Subject";
5?????????????mi.To?=?"ssybb1988@163.com";
6?????????????mi.Body?=?"Hello?World";
7?????????????mi.Importance?=?OlImportance.olImportanceNormal;
8?????????????mi.Display(true);

?

    通過(guò)Outlook.ApplicationClass()來(lái)獲取一個(gè)對(duì)當(dāng)前電腦上Outlook實(shí)例的調(diào)用,再使用Application.CreateItem創(chuàng)建一個(gè)MailItem(代表一個(gè)郵件),代碼運(yùn)行后,郵件會(huì)顯示在界面上,這樣一個(gè)簡(jiǎn)單的HelloWorld就完成了。

    ?

?

2.Explorer

    Explorer表示顯示項(xiàng)(電子郵件,約會(huì)等)的文件夾窗口,這個(gè)類(lèi)主要用來(lái)對(duì)顯示窗口進(jìn)行操作,并且提供了文件夾窗口狀態(tài)更改相關(guān)的事件。

    Explorer的常用用法包括 通過(guò)調(diào)用Application.Explorers屬性獲取當(dāng)前的Explorer集合,?Application.ActiveExplorer()來(lái)獲取當(dāng)前具有焦點(diǎn)的Explorer對(duì)象,MAPIFolder的GetExplorer()來(lái)獲取當(dāng)前文件夾的Explorer集合,這里提供的是對(duì)各個(gè)基本文件夾的調(diào)用,具體應(yīng)用會(huì)在介紹完后面的例子后給出。

?

3.Inspector

    Inspector表示對(duì)Outlook程序中單個(gè)項(xiàng)(電子郵件,約會(huì)等)的窗口, 這個(gè)類(lèi)主要針對(duì)窗口操作提供方法和屬性,與Explorer類(lèi)似,也提供窗口狀態(tài)更改相關(guān)事事件。

    因?yàn)镮nspector類(lèi)的定位與Explorer類(lèi)似,因此對(duì)他的常用操作也與Explorer大同小異,通過(guò)Application獲取Insepctor集合與當(dāng)前Inspector,具體的例子會(huì)在后面給出?

4.MAPIFolder

     MAPIFolder是整個(gè)Outlook中最核心的類(lèi),由它提供了Outlook的基本功能,Outlook提供了有16個(gè)基本的MAPIFolder,他們由Microsoft.Office.Interop.Outlook.OlDefaultFolders枚舉來(lái)定義,分別是如下:

    ?

      其中Other包括了olPublicFoldersAllPublicFolders,olFolderConflicts,olFolderSyncIssues,olFolderLocalFailures,olFolderServerFailures,olFolderManagedEmail等6個(gè)僅在擁有Exchange賬戶(hù)時(shí)會(huì)出現(xiàn)的文件夾,剩下的14個(gè)項(xiàng)目提供額諸如約會(huì),日程,收件箱,發(fā)件箱,Rss等基本文件夾,可以滿(mǎn)足我們對(duì)Outlook功能的絕大多數(shù)要求,Outlook也提供有自定義文件夾的功能,代碼如下:  

?2?????????private?void?CreateCustomFolder()
?3?????????{
?4?????????????Microsoft.Office.Interop.Outlook.Application?thisApp?=?new?Outlook.ApplicationClass();
?5?????????????Outlook.MAPIFolder?inBox?=?(Outlook.MAPIFolder)
?6?????????????????thisApp.Session.GetDefaultFolder
?7?????????????????(Outlook.OlDefaultFolders.olFolderInbox);
?8?????????????string?userName?=?(string)thisApp.ActiveExplorer()
?9?????????????????.Session.CurrentUser.Name;
10?????????????Outlook.MAPIFolder?customFolder?=?null;
11?????????????try
12?????????????{
13?????????????????customFolder?=?(Outlook.MAPIFolder)inBox.Folders.Add(userName,
14?????????????????????Outlook.OlDefaultFolders.olFolderInbox);
15?????????????????MessageBox.Show("You?have?created?a?new?folder?named?"?+
16?????????????????????userName?+?".");
17?????????????????inBox.Folders[userName].Display();
18?????????????}
19?????????????catch?(Exception?ex)
20?????????????{
21?????????????????MessageBox.Show("The?following?error?occurred:?"?+?ex.Message);
22?????????????}
23?????????}
24?????}

?

5.MailItem

    顧名思義,MailItem表示了一個(gè)電子郵件項(xiàng), 它一般會(huì)存在發(fā)件箱(olFolderSentMail),收件箱(olFolderInbox),已發(fā)郵件箱(olFolderOutbox)中。MailItem提供了創(chuàng)建,發(fā)送,查看郵件列表的方法和屬性。在開(kāi)始的例子中我們提供了創(chuàng)建一個(gè)郵件的簡(jiǎn)單的示例。

?

6.AppointmentItem

    AppointmentItem類(lèi)表示了“日歷”文件夾中的的會(huì)議,定期約會(huì),一次性約會(huì)等。AppopintmentItem類(lèi)提供了針對(duì)會(huì)議的轉(zhuǎn)發(fā)和響應(yīng)等操作,以及對(duì)會(huì)議的創(chuàng)建和詳細(xì)信息查看。會(huì)議創(chuàng)建的示例代碼如下:

?2?????????private?void?ThisApplication_Startup(object?sender,?System.EventArgs?e)
?3?????????{
?4?????????????Microsoft.Office.Interop.Outlook.Application?thisApp?=?new?Outlook.ApplicationClass();
?5?????????????Outlook.AppointmentItem?agendaMeeting?=?(Outlook.AppointmentItem)
?6?????????????????thisApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.
?7?????????????????olAppointmentItem);
?8?
?9?????????????if?(agendaMeeting?!=?null)
10?????????????{
11?????????????????agendaMeeting.MeetingStatus?=
12?????????????????????Microsoft.Office.Interop.Outlook.OlMeetingStatus.olMeeting;
13?????????????????agendaMeeting.Location?=?"Conference?Room";
14?????????????????agendaMeeting.Subject?=?"Discussing?the?Agenda";
15?????????????????agendaMeeting.Body?=?"Let's?discuss?the?agenda.";
16?????????????????agendaMeeting.Start?=?new?DateTime(2005,?5,?5,?5,?0,?0);
17?????????????????agendaMeeting.Duration?=?60;
18?????????????????Outlook.Recipient?recipient?=
19?????????????????????agendaMeeting.Recipients.Add("Nate?Sun");
20?????????????????recipient.Type?=
21?????????????????????(int)Outlook.OlMeetingRecipientType.olRequired;
22?????????????????((Outlook._AppointmentItem)agendaMeeting).Send();
23?????????????}
24?????????}

?

7.TaskItem

      TaskItem對(duì)應(yīng)任務(wù)文件夾(olFolderTasks) ,表示的是一段時(shí)間內(nèi)要完成的任務(wù),提供任務(wù)的基本信息和對(duì)任務(wù)的查看創(chuàng)建,通過(guò)調(diào)用Application.CreateItem()來(lái)實(shí)現(xiàn),調(diào)用時(shí)傳入值?Microsoft.Office.Interop.Outlook.OlItemType.olTaskItem?

?

8.ContactItem?

?      這個(gè)也是比較常用的功能,ContactItem包含了聯(lián)系人的各種信息,這個(gè)類(lèi)同時(shí)提供了對(duì)聯(lián)系人的基本操作和對(duì)聯(lián)系人的查詢(xún)

新增聯(lián)系人:?

?2?????????private?void?AddContact()
?3?????????{
?4?????????????Microsoft.Office.Interop.Outlook.Application?thisApp?=?new?Outlook.ApplicationClass();
?5?????????????Outlook.ContactItem?newContact?=?(Outlook.ContactItem)
?6?????????????????thisApp.CreateItem(Outlook.OlItemType.olContactItem);
?7?????????????try
?8?????????????{
?9?????????????????newContact.FirstName?=?"Jo";
10?????????????????newContact.LastName?=?"Berry";
11?????????????????newContact.Email1Address?=?"somebody@example.com";
12?????????????????newContact.CustomerID?=?"123456";
13?????????????????newContact.PrimaryTelephoneNumber?=?"(425)555-0111";
14?????????????????newContact.MailingAddressStreet?=?"123?Main?St.";
15?????????????????newContact.MailingAddressCity?=?"Redmond";
16?????????????????newContact.MailingAddressState?=?"WA";
17?????????????????newContact.Save();
18?????????????????newContact.Display(true);
19?????????????}
20?????????????catch
21?????????????{
22?????????????????MessageBox.Show("The?new?contact?was?not?saved.");
23?????????????}
24?????????}

?

?查找聯(lián)系人:

?1?
?2?????????private?void?ThisApplication_Startup(object?sender,?System.EventArgs?e)
?3?????????{
?4?????????????FindContactEmailByName("John",?"Evans");
?5?????????}
?6?
?7?????????private?void?FindContactEmailByName(string?firstName,?string?lastName)
?8?????????{
?9?????????????Microsoft.Office.Interop.Outlook.Application?thisApp?=?new?Outlook.ApplicationClass();
10?????????????Outlook.NameSpace?outlookNameSpace?=?thisApp.GetNamespace("MAPI");
11?????????????Outlook.MAPIFolder?contactsFolder?=
12?????????????????outlookNameSpace.GetDefaultFolder(
13?????????????????Microsoft.Office.Interop.Outlook.
14?????????????????OlDefaultFolders.olFolderContacts);
15?
16?????????????Outlook.Items?contactItems?=?contactsFolder.Items;
17?
18?????????????try
19?????????????{
20?????????????????Outlook.ContactItem?contact?=
21?????????????????????(Outlook.ContactItem)contactItems.
22?????????????????????Find(String.Format("[FirstName]='{0}'?and?"
23?????????????????????+?"[LastName]='{1}'",?firstName,?lastName));
24?????????????????if?(contact?!=?null)
25?????????????????{
26?????????????????????contact.Display(true);
27?????????????????}
28?????????????????else
29?????????????????{
30?????????????????????MessageBox.Show("The?contact?information?was?not?found.");
31?????????????????}
32?????????????}
33?????????????catch?(Exception?ex)
34?????????????{
35?????????????????throw?ex;
36?????????????}
37?????????}

?

?

?對(duì)Outlook的基本內(nèi)容的介紹告一段落,后面會(huì)根據(jù)具體情況尋找一些具體的主題給出詳細(xì)講解和示例,希望大家能喜歡。

?

本節(jié)示例下載?

/Files/shenyubao/OutLookDemo1.rar?

轉(zhuǎn)載于:https://www.cnblogs.com/shenyubao/archive/2011/01/29/1947194.html

總結(jié)

以上是生活随笔為你收集整理的Office文档模型深入---Outlook文档模型与开发实战(1)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。