Excel-DNA项目只用1个文件实现Ribbon CustomUI和CustomTaskpane定制【C#版】

Excel-DNA项目中的自定义功能区和自定义任务窗格需要用到各种命名空间、添加所需文件,才能实现。后来我发现可以把所有代码都写在Class1.cs这个默认文件中。

大家可以在Visual Studio中创建一个类库项目(.Net Framework),然后把默认的Class1.cs中的代码整体替换为下面我贴的这个代码。然后启动调试,就可以看到自定义功能区和任务窗格了。

 1 using System.Runtime.InteropServices;
 2 using ExcelDna.Integration;
 3 using ExcelDna.Integration.CustomUI;
 4 using Excel = Microsoft.Office.Interop.Excel;
 5 using System.Windows.Forms;
 6 namespace Excel_DNA_Template_CS
 7 {
 8     [ComVisible(true)]
 9     public class Class1 :ExcelRibbon,IExcelAddIn
10     {
11         public IRibbonUI R;
12         public override string GetCustomUI(string RibbonID)
13         {
14             string xml = @"<customUI xmlns='http://schemas.microsoft.com/office/2009/07/customui' onLoad='OnLoad'>
15     <ribbon startFromScratch='false'>
16         <tabs>
17             <tab id='Tab1' label='RibbonXmlEditor'>
18                 <group id='Group1' label='Author:ryueifu'>
19                     <button id='Button1' label='CTP' imageMso='C' onAction='Button1_Click'/>
20                     <button id='Button2' label='UnLoad' imageMso='U' onAction='Button2_Click'/>
21                 </group>
22             </tab>
23         </tabs>
24     </ribbon>
25 </customUI>";
26             return xml;
27         }
28         public void OnLoad(IRibbonUI ribbon)
29         {
30             R = ribbon;
31             R.ActivateTab(ControlID: "Tab1");
32         }
33         public void Button1_Click(IRibbonControl control)
34         {
35             Module1.ctp.Visible = !Module1.ctp.Visible;
36         }
37         public void Button2_Click(IRibbonControl control)
38         {
39             Excel.AddIn ThisAddin = (ExcelDnaUtil.Application as Excel.Application).AddIns["Excel_DNA_Template_CS"];
40             ThisAddin.Installed= false;
41         }
42         void IExcelAddIn.AutoClose()
43         {
44             Module1.DisposeCTP();
45         }
46 
47         void IExcelAddIn.AutoOpen()
48         {
49             Module1.CreateCTP();
50         }
51     }
52     public static class Module1
53     {
54         public static UserControl uc;
55         public static CustomTaskPane ctp;
56         public static void CreateCTP()
57         {
58             uc = new UserControl();
59             ctp = CustomTaskPaneFactory.CreateCustomTaskPane(userControl: uc, title: "CTP");
60             ctp.DockPosition = MsoCTPDockPosition.msoCTPDockPositionRight;
61             ctp.Visible = true;
62         }
63         public static void DisposeCTP()
64         {
65             ctp.Delete();
66             ctp = null;
67         }
68     }
69 }

 

转载于:https://www.cnblogs.com/ryueifu-VBA/p/10122618.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值