我的VSTO之路.docx

上传人:b****6 文档编号:13004713 上传时间:2023-06-10 格式:DOCX 页数:71 大小:878.15KB
下载 相关 举报
我的VSTO之路.docx_第1页
第1页 / 共71页
我的VSTO之路.docx_第2页
第2页 / 共71页
我的VSTO之路.docx_第3页
第3页 / 共71页
我的VSTO之路.docx_第4页
第4页 / 共71页
我的VSTO之路.docx_第5页
第5页 / 共71页
我的VSTO之路.docx_第6页
第6页 / 共71页
我的VSTO之路.docx_第7页
第7页 / 共71页
我的VSTO之路.docx_第8页
第8页 / 共71页
我的VSTO之路.docx_第9页
第9页 / 共71页
我的VSTO之路.docx_第10页
第10页 / 共71页
我的VSTO之路.docx_第11页
第11页 / 共71页
我的VSTO之路.docx_第12页
第12页 / 共71页
我的VSTO之路.docx_第13页
第13页 / 共71页
我的VSTO之路.docx_第14页
第14页 / 共71页
我的VSTO之路.docx_第15页
第15页 / 共71页
我的VSTO之路.docx_第16页
第16页 / 共71页
我的VSTO之路.docx_第17页
第17页 / 共71页
我的VSTO之路.docx_第18页
第18页 / 共71页
我的VSTO之路.docx_第19页
第19页 / 共71页
我的VSTO之路.docx_第20页
第20页 / 共71页
亲,该文档总共71页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

我的VSTO之路.docx

《我的VSTO之路.docx》由会员分享,可在线阅读,更多相关《我的VSTO之路.docx(71页珍藏版)》请在冰点文库上搜索。

我的VSTO之路.docx

我的VSTO之路

 

初识VSTOAddin开发

 

这篇博客将简单介绍一些VSTOAddin开发的知识。

 

1.VSTO是什么我们能够用VSTO做什么

VSTO全称VisualStudioToolforOffice,是能够让我们针对现有的Office程序进行功能扩展。

在工作或生活中其实我们或多或少用到过VSTO插件,比如安装有道字典/AdobePro会在

Office程序中嵌入插件程序。

2.VSTO开发环境的准备:

(1).我们的PC上需要安装有Office(Office2007及以上版本);

(2).以VisualStudio2015为例,在安装时需要勾选

没有安装也没关系,能够在控制面板中经过改正

OfficeDevelopment模块。

假如初始安装

VisualStudio的方式进行安装。

成功安装后,

翻开VisualStudio2015-->新建工程-->选择OfficeDevelopment模块:

 

3.Office开发的模板,我们主要看(Application-Level/Template-Level)的模板,这二者的加载方式请看下边的图示:

 

翻开Office解决方案的文档后,MicrosoftOffice应用程序检查自定义文档属性,以确立能否有与文档关系的托管代码扩展。

 

PS:

这二者在开发上的差别就是模板不同样,其余基本没有。

此外一个Application-Level是

针对整个OfficeWord/Excel/...的定制,而Template-Level是正对Word/Excel/...模板的定制。

 

4.我们以VSTOWordAddin为例,讲一下VSTOWordAddinDevelopment中的核心对象。

 

Application:

代表了Word程序

 

Document:

代表了一个Word文档,一个WordApplication能够有1个或许多个Document

 

Bookmark:

代表了在Word文档中一个连续的地区,它有一个开端地点和结束地点,能够用

一个表记来标志这段连续的地区,这个就是Bookmark

 

Range:

代表了在Word文档中一个连续的地区,它有一个开端地点和结束地点

 

Selection:

代表了目前选中的地区;

 

更多内容,请参照:

 

我们经过新建一个WordAddin的工程来初步认识下这几个对象。

Code:

 

privatevoidThisAddIn_Startup(objectsender,e)

{

+=Application_WindowSelectionChange;

 

doc="D:

\",AddToRecentFiles:

false);

}

 

怎样部署VSTO插件(以Word为例),从VisualStudio编译Word插件时,向注册表中写入的

信息,我们能够利用这些注册表信息来部署Word插件,

 

需要注意的两个值:

LoadBehavior:

3代表了启动时自动加载。

详细请参照:

Manifest:

指定VSTO插件的详细地点:

LoadBehavior

 

PS:

也能够将插件的信息写入到注册表

 

Machine

 

节点下:

HKEY_LOCAL_MACHINE--->SOFTWARE---->Microsoft--->Office---->Word--->Addins.这样登录这

台PC的所实用户都能够使用到这个插件。

 

在部署时,我们只需要将这些注册表信息写入正确的地点即可。

经过ClickOnce来进行部署。

此外也能够选择其余部署方式,

 

自然最简单的部署方式能够

比如WindowsInstaller:

能够参

考:

 

VSTO的学习资源

 

感谢您的阅读!

 

我的VSTO之路:

 

VSTO是微软供应给.Net开发人员的一个接口,经过他我们能够对Office程序做一些办理。

可是

这个接口其实不尽如人意,对比微软的好多其余产品,VSTO的稳固性其实不好,有关的文档也极少。

这类状况下,好多问题需要我们程序员自己去战胜。

我自己从

08年进了此刻这家企业,断断续

续做

VSTO开发已经快

2年半了,不敢说对

VSTO精晓,但起码已经有了深入的解,特别对开发

中的一些

Trick和一些

Bug。

准备写点东西记录一下这两年来的心路历程。

同时也感触于国内的

VSTO文档资料实在贫乏,我自己在开发过程中走了许多弯路,希望我写的这些文档能对此后的开发者们有所帮助。

 

我喜爱在写文档以前先准备一个纲要,而后再往里面填补,因此在序里面,我先列一下我准备写

 

的主要内容

 

1.VSTO基本知识

1.创立项目

2.增添Ribbon

3.增添TaskPanel

2.Word基本知识

1.WordObjectModel介绍(Application、Document、Range、Selection和Bookmark)

 

1.Application对象

2.Document对象

3.Range对象

4.Selection对象

5.Bookmark对象

2.插件:

自定义Search面板

3.Word深入开发

1.改正右键菜单

2.往文档中插入内容

3.增添超链接、书签

4.鉴于选中内容,显示悬浮框

5.遗留问题

4.Outlook有关知识

1.Outlook的基本构造

2.获取Outlook的目录树

3.捕捉新邮件和邮件挪动

4.改正Outlook右键菜单

5.经过VSTO新建邮件或联系人

6.OutlookFormRegion的使用,以及扩展Outlook联系人的内容

7.遗留问题

5.Excel有关知识

 

1.改正Excel中,Cell的内容和款式

2.获取Excel中所有内容,即有输入的Cell

3.改正Excel右键菜单

4.遗留问题

6.SmartTag

1.VSTOSmartTag的开发

2.COMSmartTag的开发

7.公布VSTO程序

1.Clickonce方式

2.安装包方式

8.VSTO以外

1.对于C#中对于Excel数据的导入与导出

 

*这些文档除了SmarTag是针对Office2007的以外,其余的内容基本合用于Office2007~Office

2010。

此外,抗议一下微软,竟然在Office2010中取销了SmartTag大多数的功能。

 

我的VSTO之路

(二):

VSTO程序基本知识

开始以前,第一我介绍一下我的开发环境:

VS2010+Office2010,是鉴于.Netframework和VSTO。

以下的典范代码都鉴于这个,假如你使用的是VS2008,那么问题也不大,基本能够移植过去。

需要注意的是.Netframework中增添了dynamic种类和可选参数,而这两点新的特征在VSTO中

 

被宽泛使用,新特征的详尽内容我就不介绍了,(其实介绍的地方好多,Google一下就能够了),

移植的时候需要略微调整一下代码。

创立VSTO项目

 

环境搭建

 

要开发VSTO项目,环境搭建比较简单,微软这方面做得都做不错。

只需安装了VS2010(需要勾

选VSTO和Office2010即可。

VS2008配合Office2007也能够轻松搭建开发环境。

 

创立项目

 

选择创立新项目->C#->Office,而后选择Word2010Add-in,以下列图:

 

能够看到图中除了Word2010Add-in,还有Word2010Document和Word2010Template这两种

项目种类。

它们的差别在于,Add-in属于Applicationlevel,即是一个插件,每次Word启动的时

候都会加载这个插件。

而Document和Template属于DocumentLevel,这类项目会生成一个Word

文件(Document项目会生成.docx文件,而Template会生成.dotx),你写的代码只有在运转这个特定的Word文件的时候才会起作用。

增添自定义的Ribbon

右击项目->增添新的Item->Office->Ribbon(VisualDesigner),以下列图:

 

往Ribbon上,增添一个按钮,并取名为Hello

 

双击Hello按钮,在

OnClick中,增添以下代码:

1:

privatevoidbtHello_Click(objectsender,RibbonControlEventArgs

e)

2:

{

3:

"HelloWorld!

");

4:

}

按F5运转目前途序,VS会帮你自动开始一个新的Word实例,而后在Word中选择Add-ins标签

页,点击Hello按钮。

假如你顺利看到HelloWord!

对话框,就说明你的第一个VSTO程序,顺

利达成了。

 

对于我们的一个VSTO程序,我们做一些小的优化。

以前一张图我们能够看到,我们的Ribbon

和其余插件的Ribbon都挤在了Add-ins,这个Tabs中。

我们此刻要把我们的Ribbon独立出来。

在VS中,翻开Ribbon的设计界面,并选择RibbonTab,以下列图,把ControlIdType改为Custom,

而后把ControlID改为MyFirstAddin,这样我们的Ribbon会独占一个RibbonTab。

 

*这里有个小Trick,假如你的客户希望你把自己建的Ribbon插入到Office自己的Ribbon里面去,

我们也能够实现。

把ControlIdType设定为Office,并把OfficeID设定为TabHome,以下列图:

 

运转界面

 

其余的OfficeID能够到这里查察:

Office2010IDs,Office2007IDs

 

增添TaskPane

创立TaskPane

 

TaskPane是一个很实用的控件,它能够驻留在Office程序的窗口上,让开发者更具自己的需求

创立界面。

第一我们先创立一个UserControl,以后这个UserControl将嵌入在TaskPane中。

我们所增添的代码,主要也加在这个UserControl中。

 

在UserControl上放一个Label,我们临时不在这里写进一步的代码:

 

在文件中,进行以下改正,这样在这样Addin被加载时,就会显示TaskPane:

1:

publicpartialclassThisAddIn

2:

{

3:

publicCustomTaskPane_MyCustomTaskPanenull;=

4:

5:

privatevoidThisAddIn_Startup(objectsender,e)

6:

{

7:

UCForTaskPanetaskPanenew=UCForTaskPane();

8:

_MyCustomTaskPane="MyTaskPane");

9:

=200;

10:

=true;

11:

}

12:

13:

privatevoidThisAddIn_Shutdown(objectsender,e)

14:

{

15:

}

16:

17:

#regionVSTOgeneratedcode

 

18:

 

4:

event

ApplicationEvents4_WindowSelectionChangeEventHandlerWindowSelectionChange;

Delegate接口

1:

[TypeLibType(16)]

2:

[ComVisible(false)]

 

3:

publicdelegatevoid

ApplicationEvents4_WindowSelectionChangeEventHandler(SelectionSel);

 

Bookmark与ContentControl

 

Bookmark即书签,在Word文档中做一个标志,方便查阅。

开发过程中,我们能够鉴于Range

来创立Bookmark。

如:

1:

agas;

7:

8:

missing,missing,missing,false);

3:

 

4:

;

29:

[1].();

30:

 

31:

.....

68:

#endregion

69:

}

70:

}

最后的成效能够参照本文开始的视频。

这个功能能够推而广之,比方能够把用户目前选中的内容与TaskPane交互,这就看各位的需求了。

 

总结

 

至此,我已经介绍了Word插件开发的主要技巧,大家能够下载我制作的插件源代码,里面包含

了这些功能。

Word作为一个经历了13代的产品,包含的功能特别多,我不可以在此所有介绍完

毕。

假如大家有什么问题,能够到VSTO之路小组中发问,我会和大家持续商讨,同时也方便新

 

人查阅。

一下篇文章,我将开始介绍Outlook的开发技巧,希望大家持续支持

 

最后,本文欢迎转载,但请保存出处,大家假如有问题,能够联系我

 

或许到

 

VSTO之路小组中

发问。

 

我的VSTO之路(五):

Outlook初步开发之联系人扩展

上一我达成

Word

的介,文本开始,我将侧重介

Outlook。

Outlook

是微

Office

中一

个特别用的工具,特别在一个有

WindowsDomain

的企业局域网中,

Outlook

是工最常用

的通工具,因此

Outlook

行一步的定制开的需求量是很大的。

本文中,我先以系人

的展开始,解怎样开一个大的

Outlook

插件。

 

故事的开始

第一我假一个景。

有一天,市部的同事来找你帮个小忙(有的人都知道,一般都

 

是无尽难过的开始)。

他希望在Outlook的系人信息上加入方父亲母亲诞辰信息,方便他

 

做市(嘿嘿,怎么大家自己想咯

 

)。

同,最好能和

 

Outlook

 

本来的系人

界面保持一致便于。

了不辜同事的希望,你翻开了

VisualStudio

⋯⋯

 

考虑后,你在海中浮了一下两个功能点:

 

1.OutlookFormRegion:

用于制作界面,能够和本来的

 

Outlook

 

界面整合在一同。

2.ContactUserDefineFields:

用于保存新加入的属性。

而新的系人界面,你打算画成:

 

业务逻辑:

每次

 

Contact

 

界面展现的时候,我们制作的

 

FormRegion

 

会读联系人顶用户自定义属

性里面的值(我们分别为父亲母亲的名字和诞辰创立封闭的时候,假如用户改变了这四个控件的值,

4个用户属性),并展现在界面上。

当Contact

我们将其写回到自定义属性中去。

对于用户自定

义的属性,以下列图:

 

OutlookObjectModel

 

介绍

 

正式开始以前,我们先认识一下

Outlook

的对象模型。

 

中的Application对象就像我在以前在Word中介绍过的Application对象同样,是所有对象的最

顶层。

即使你同时开多个Outlook,你也只创立了一个Application(进度也只有一个)。

Application

对象中,我们需要要点关注三个地方:

 

1.CreateItem方法:

经过这个方法,我们创立新的Outlook对象,比如Email、Task、Contact等。

2.Explorers属性:

获取目前的对象会合。

3.Inspectors属性:

获取目前的对象会合。

 

有好多方法能够获取

Application

对象,比较常用的是直接在

Addin工程中,经过获取。

假如你看

过我以前写的

Word插件,你会发现这里是和

WordVSTO,其实这是微软为我们设定的模式。

括在以后的

Excel和PowerPoint

中也都是这样的。

我这里进一步介绍一下

Globals,它是一个在

中定义的一个类,对于

Outlook

来说,它定义了三个静态属性,

ThisAddin、Ribbons和Inspectors

对象。

Globals作用是,经过它我们能够在

Addin项目的任何地点获取我们所需要的上下文。

 

类,即目前Outlook的主窗口。

示显示包含项(如电子邮件、任务或约会)的文件夹内容的窗口。

Explorer类包含可用来改正窗口的方法和属性,以及窗口改正时所引起的事件。

需要注意的是,

Outlook是能够开多个Explorer,可是只有一个Application。

这点和Word近似,而和我们此后会

讲到的Excel不同。

一般我们经过方法来获取目前(焦点所在)的Explorer。

 

类,即一个OutlookItem的窗口,比方你写邮件时弹出的窗口就是一个Inspector,你创立一个新

的联系人也是一个Inspector。

Inspector类是在开发Outlook插件中很常用的。

特别是以下几个地

方:

 

1.

获取目前的Inspector:

,好多时候我们都会经过这个方法获取此刻的

Inspector,

可是这个不必定靠的住,我在今日的例子中就会讲到一种特别状况。

2.

新Inspector创立事件:

,假如你需要为每个

Email加一个TaskPane,就需要使

用到这个事件。

3.获取Inspector对应的Outlook对象:

,Inspector不过一个窗口,而这个窗口背后的Outlook对象,则需要经过这个方法获得。

 

即Outlook中的目录,Outlook中供应了16种内建的目录种类,由列举定义。

 

分别对应Outlook中的Email、MeetingRequest

象的CreateItem方法来创立。

 

、Task和

 

Contact,它们都能够经过

 

Application

 

 

OutlookFormRegion

 

介绍

为了更好地制作界面,我们使用的是OutlookFormRegion。

它是从Outlook2007

一项新的技术。

它供应一种更为方便的方式扩展Outlook项目的界面。

相对以前的

FormRegion是鉴于,开发更为简单,并且和Outlook自己,联合得更为密切。

开始,微软进入

CustomForm,

 

创立FormRegion

 

第一,我们增添一个新的Item,选择Office项目种类中的OutlookFormRegion

 

我们选择设计一个新的FormRegion

 

FormRegion的种类为Adjoining,即增添在页面的底部。

 

假如你需要在

 

RegionForm

 

上增添比许多的控件,你也能够选择

 

Separate,这样你就会有一个完

整的空

Form。

它成为一个独立的标签页,不合原始的

Form

矛盾。

 

为FormRegion起名字,并且设定在编写模式和阅读模式中都显示我们的RegionForm。

 

我们的FormRegion是嵌入在Contact中的。

 

达成了这一系列的配置以后,VS会帮我们创立一个空的FormRegion,假如需要改正方才的设置,能够它在属性中改正,以下列图。

 

我们开始往这个Form上增添控件,一共两个textbox、两个datetimepicker:

 

业务逻辑实现

 

流程图

 

这是依据我们的业务逻辑代码制作的流程图。

 

源代码剖析

 

成员变量

1:

utlookItem。

能够看以下的代码:

1:

privatevoidEmployeeFamilyForm_FormRegionShowing(objectsender,e)

2:

{

3:

utlookItemas;

5:

6:

//从联系人的自定义属性中,获取母亲姓名属性

7:

_MotherNameProperty=;

8:

if(_MotherNameProperty!

=null)

9:

{

 

10:

//假如存在这个属性,则拿出Value为控件赋值

11:

=asString;

12:

}

13:

else

14:

{

15:

//不存在则创立这个属性

16:

_MotherNameProperty=,;

17:

}

18:

19:

//母亲诞辰,原理同样

20:

_MotherBirthdayProperty=;

21:

if(_MotherBirthdayProperty!

=null)

22:

{

23:

=(DateTime);

24:

}

25:

else

26:

{

27:

_MotherBirthdayProperty=,;

28:

}

29:

30:

//父亲姓名

31:

_FatherNameProperty=;

32:

if(_FatherNa

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2