说明:创建 Excel 插件项目。
这里,我将会使用Visual Studio 2010 所带的VSTO(Visual Studio Tools for Office)来开发这个插件,此外,Excel 2007也是必须的。
ps:插件(AddIn),实际上是一个组件(COM),插件安装到系统后,会在Office的对应目录HKEY_CURRENT_USER\Software\Microsoft\Office\Word\Addins(以WORD为例)上标记此插件的名称,加载方式等,而在组件注册的过程中此插件的的执行程序的全路径也会在注册表中标记,按照插件ID在注册表中查找,就可以找到这些注册表项。其实用VS.NET来开发Office插件,是不需要关心这些问题的,因为在建立插件项目的同时,会建立一个此插件项目的安装项目,用此安装项目就可以自动执行在注册表中添加这些项目。
步骤:
1、打开Visual Studio 2010。文件》新建》项目,新建一个项目,建立一个共享的插件,选择Shared Add-in。
2、确定项目目录之后,点击ok,会出现插件生成向导。
选择开发语言,然后点击Next》
选择需要嵌入这个插件的应用程序。这里选择Excel,点击Next》
在两个编辑框中输入插件的名称和描述,点击Next》
第一个选项,表示是否在应用程序启动的时候,启动这个插件;
第二个选项表示这个插件是所有用户使用,还是仅仅当前用户使用。
选中这两个检查框,点击Next》点击Finish。
最后生成两个项目,在右边的Solution Explorer中,一个是插件项目MyAddin1,另一个是插件安装项目MyAddin1Setup。
3、开始编写Hello Away!
在插件中需要对Excel对象进行操作,需要首先添加一个引用。
选择COM页,在下面的组件中选择Microsoft Excel 12.0 Object Library。(excel版本号,2003是11.0,2007是12.0,2010是14.0)
添加成功之后,在插件项目中的Connect.cs文件中,添加using
插件项目中的Connect.cs,对Excel的操作就是从这个文件开始的。
其中OnConnection()事件是启动插件的地方。
public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom) { applicationObject = application; addInInstance = addInInst; }
我们可以在OnStartComplete()事件中写代码,比如说绑定事件。
首先我们要获得Excel.Application这个类,在OnConnection()中已经得到applicationObject,在这里转化一下就可以了。
Excel.Application excelApp=(Excel.Application)applicationObject;
接着,我们就可以绑定excelApp这个对象的事件了,我们可以通过智能感知,很方便的得到excelApp可以使用的事件。
在这里我们绑定SheetSelectionChange,选中它,点击鼠标。
在这个事件后面添加+=,系统会自动提示要增加的内容。
提示出现后,点击Tab键,会自动完成这些代码
再点击一次Tab键,将需要绑定的事件excelApp_SheetSelectionChange也自动完成。
public void OnStartupComplete(ref System.Array custom) { Excel.Application excelApp = (Excel.Application)applicationObject; excelApp.SheetSelectionChange += new Excel.AppEvents_SheetSelectionChangeEventHandler(excelApp_SheetSelectionChange); } void excelApp_SheetSelectionChange(object Sh, Excel.Range Target) { throw new NotImplementedException(); }
接着完成excelApp_SheetSelectionChange这个方法就可以。
老规矩,弹出一个消息框就对了。
要弹出消息框,首先要添加引用,用同样的方法添加System.Windows.Forms.
然后添加using
using System.Windows.Forms;
在excelApp_SheetSelectionChange中添加代码
void excelApp_SheetSelectionChange(object Sh, Excel.Range Target) { MessageBox.Show(" Hello Away !"); //throw new NotImplementedException(); }
现在就可以编译这两个项目了,选中MyAddin1Setup这个项目,点击鼠标右键》重新生成。
等待Rebuild成功之后,就可以Install安装这个插件了。
安装好之后,打开Excel体验一下了。
当点击另一个单元时,就会弹出一个消息框“ Hello Away ! ”。