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

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

【VSTO】创建 Excel 2007 AddIn (2. 使用 Ribbon 和自定义Pane View)_第1张图片 

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

【VSTO】创建 Excel 2007 AddIn (2. 使用 Ribbon 和自定义Pane View)_第2张图片 
然后在 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 处插入选中的图片。
【VSTO】创建 Excel 2007 AddIn (2. 使用 Ribbon 和自定义Pane View)_第3张图片 

OK,目前为止一个图片浏览扩展的Excel PaneView 就基本上完成了,但还存在一点小问题:PaneView 现在只是在 AddIn 时加载,如果用户点击关闭了就没有UI能提供加载了。接下来追加一个 Ribbon 控件来控制 PaneView 的显示。
【VSTO】创建 Excel 2007 AddIn (2. 使用 Ribbon 和自定义Pane View)_第4张图片
【VSTO】创建 Excel 2007 AddIn (2. 使用 Ribbon 和自定义Pane View)_第5张图片

从 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
另外,通过 Ribbon Button 的 Image 显示图标。运行一下:
【VSTO】创建 Excel 2007 AddIn (2. 使用 Ribbon 和自定义Pane View)_第6张图片

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

你可能感兴趣的:(image,Excel,Office,扩展,button,WinForm)