【VSTO】创建 Excel 2007 AddIn (2. 使用 Ribbon 和自定义Pane View)

在之前的文章里介绍了怎么添加一个自定义CommandBar,接下来介绍如何加入一个自定义Pane,并在Pane上加入并利用 .net winform 控件。本次要实现一个Excel插入图片的预览补助功能,先上张图。



在 VSTO 里实现这个功能其实蛮简单,首先添加一个 UserControl :


然后在 ThisAddIn_Startup 里,将 PicturePaneView 实例化并加入 CustomTaskPanes 中即可。

Private Sub ThisAddIn_Startup() Handles Me.Startup Dim view = New PicturePaneView CustomPane = Me.CustomTaskPanes.Add(view, "PicturePreview") CustomPane.Visible = False End Sub

UserControl 中的所有操作都和 Winform 开发中无异,这里就不赘述了。 在 View 里,可以通过Globals.ThisAddIn.Application 获得 Excel 实例。
和 Excel 的交互:通过双击 DataGridView 的一条数据(图片名),将图片插入 Excel,代码如下:

Private Sub DataGridView1_CellDoubleClick(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) _ Handles DataGridView1.CellDoubleClick Dim sheet As Excel.Worksheet = Globals.ThisAddIn.Application.ActiveSheet Dim imagePath = DataGridView1.CurrentRow.Cells(1).Value Dim activeCell = Globals.ThisAddIn.Application.ActiveCell sheet.Shapes.AddPicture(imagePath, Microsoft.Office.Core.MsoTriState.msoFalse, _ Microsoft.Office.Core.MsoTriState.msoTrue, _ activeCell.Left, activeCell.Top, _ 100, 100) End Sub

通过 Excel.Application. ActiveSheet/Excel.Application.ActiveCell 取得当前激活的 WorkSheet 和 Cell。并在 ActiveCell 处插入选中的图片。

OK,目前为止一个图片浏览扩展的Excel PaneView 就基本上完成了,但还存在一点小问题:PaneView 现在只是在 AddIn 时加载,如果用户点击关闭了就没有UI能提供加载了。接下来追加一个 Ribbon控件来控制 PaneView 的显示。

从 Office Ribbin Controls 里拖一个Button控件放到 Ribbon面板上,然后添加事件。不过直接是访问不到自定义 View 的实例的,需要ThisAddIn公开这个属性。

Public Property CustomPane As Microsoft.Office.Tools.CustomTaskPane然后在 Ribbon的 Click 事件处理中,调用 CustomPane.Visible = True

Private Sub btnImgBrowser_Click(sender As System.Object, e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) _ Handles btnImgBrowser.Click Globals.ThisAddIn.CustomPane.Visible = True End Sub另外,通过 RibbonButton 的 Image 显示图标。运行一下:

最后赞一下 VSTO 这种强大的扩展机制。只要有想法就能轻松在 Office 里实现非常酷的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值