最新WPS办公软件学习教程_免费企业办公软件下载_金山WPS Office官网论坛

 找回密码
 
查看: 280|回复: 31

[.net] 用C#.NET实现ET的Ribbon界面1(类库方式)

[复制链接]

84

主题

59

听众

3088

积分

测试体验团员

系统分析师

Rank: 14Rank: 14Rank: 14Rank: 14

该用户从未签到

金币
984
威望
8204
帖子
842
精华
3

WPS粉丝团 技术分享团 解答支持团 测试体验团 重阳节勋章 技巧教程分享达人 最佳教程奖 优秀会员奖

发表于 2015-5-1 22:58 |显示全部楼层
分享到: 新浪微博 腾讯微博
之前,@卡卡尼莫 已经在《[.net] 一步步进行WPS插件开发(C#):.NET开发WPS表格插件编程基础》一文中讲述了如何实现C#.NET实现工具栏,现在我来补充说明如何实现Ribbon界面。

用C#.NET实现ET的Ribbon界面2(VSTO方式)

我的开发平台是:
操作系统:Windows 8.1 with update
开发工具:Visual Studio 2013 with update4
WPS版本:V9版本(9.1.0.4895,专业增强版)
示例源代码下载:
1、以管理员身份运行Visual Studio 2013,文件,新建,项目,选择Visual C#下的类库

2、重命Class1为MyClass(这一步不是必须的,但如果你不改,后面写注册表时要保持为Class1)

3、添加引用:




4、添加using语句
  1. using System.Windows.Forms;//MessageBox会用到
  2. using System.Drawing;//Bitmap会用到
  3. using Office;
  4. using Excel;
  5. using AddInDesignerObjects;
复制代码
5、添加资源文件,并设置访问修饰符为Public。再在资源文件中添加我事先准备好的两张图片和一个文本文件(Ribbon界面的XML代码)






6、实现两个接口IDTExtensibility2和IRibbonExtensibility,后者即实现Ribbon界面用。
整个MyClass.cs文件的代码如下:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Windows.Forms;//MessageBox会用到
  7. using System.Drawing;//Bitmap会用到
  8. using Office;
  9. using Excel;
  10. using AddInDesignerObjects;
  11. namespace ETClassTYEX
  12. {
  13.     public class MyClass : IDTExtensibility2, IRibbonExtensibility
  14.     {
  15.         public static Excel.Application app; //定义Excel应用程序变量
  16.         //以下实现了 IDTExtensibility2
  17.         public void OnAddInsUpdate(ref Array custom)
  18.         {
  19.             //throw new NotImplementedException();
  20.         }
  21.         public void OnBeginShutdown(ref Array custom)
  22.         {
  23.             //throw new NotImplementedException();
  24.         }
  25.         public void OnConnection(object Application, ext_ConnectMode ConnectMode, object AddInInst, ref Array custom)
  26.         {
  27.             //当前ETApplication赋值给app
  28.             app = (Excel.Application)Application;
  29.         }
  30.         public void OnDisconnection(ext_DisconnectMode RemoveMode, ref Array custom)
  31.         {
  32.             //throw new NotImplementedException();
  33.         }
  34.         public void OnStartupComplete(ref Array custom)
  35.         {
  36.             //throw new NotImplementedException();
  37.         }
  38.         //以下实现了 IRibbonExtensibility
  39.         public string GetCustomUI(string RibbonID)
  40.         {
  41.             return MyRes.TYRibbon; //返回Ribbon界面的XML代码
  42.         }
  43.         //Ribbon界面的回调函数,返回图像
  44.         public Bitmap GetRibbonImage(Office.IRibbonControl ctrl)
  45.         {
  46.             Bitmap myBitmap;
  47.             switch (ctrl.Id) //这里只有两张图片可以用if语句,但图片多了用switch,下面的事件响应也同理
  48.             {
  49.                 case "Mu_TYCS":
  50.                     myBitmap = MyRes.TYbmp1; break;
  51.                 case "Bt_TYABOUT":
  52.                     myBitmap = MyRes.TYbmp2; break;
  53.                 default:
  54.                     myBitmap = null; break;
  55.             }
  56.             return myBitmap;
  57.         }
  58.         //Ribbon界面的回调函数,响应事件
  59.         public void GetRibbonOnAction(IRibbonControl ctrl)
  60.         {
  61.             switch (ctrl.Id)
  62.             {
  63.                 case "Bt_TYCS1":
  64.                     app.ActiveWorkbook.ActiveSheet.Cells[1, 1].Value= "测试1功能"; break;
  65.                 case "Bt_TYCS2":
  66.                     app.ActiveWorkbook.ActiveSheet.Cells[1, 1].Value= "测试2功能"; break;
  67.                 case "Bt_TYABOUT":
  68.                     MessageBox.Show("关于天远ET工具箱 C#开发版本 示例"); break;
  69.                 default:
  70.                     break;
  71.             }
  72.         }
  73.     }
  74. }
复制代码
7、更改AssemblyInfo.cs中[assembly: ComVisible(false)]为[assembly: ComVisible(true)]
   勾选为COM互操作注册。

8、生成程序,并添加注册表。
  1. Windows Registry Editor Version 5.00
  2. [HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\Excel\Addins\ETClassTYEX.MyClass]
  3. "FriendlyName"="ETClassTYEX"
  4. "Description"="天远ET工具箱示例"
  5. "LoadBehavior"=dword:00000003
  6. "CommandLineSafe"=dword:00000001
  7. [HKEY_CURRENT_USER\Software\Kingsoft\Office\ET\AddinsWL]
  8. "ETClassTYEX.MyClass"=""
复制代码
9、结果




本帖子中包含更多资源

您需要 登录 才可以下载或查看,

已有 2 人评分威望 收起 理由
zhouyiran1@126.com + 30 WPS有你更精彩!
卡卡尼莫 + 30 这么好的教程贴,我和我的小伙伴们都惊呆了.

总评分: 威望 + 60   查看全部评分

热爱分享和学习。希望WPS论坛越办越好,WPS软件越做越好。也希望能在这里交到更多志同道合的朋友。我的邮箱:ypr@yprnet.com
我在WPS论坛上的教程帖子合集: http://blog.yprnet.com/wps

0

主题

0

听众

12

积分

LV.1

Rank: 1

该用户从未签到

金币
0
威望
20
帖子
7
精华
0
发表于 2015-5-2 08:39 |显示全部楼层
好强大,希望你能开发出更多更加强大的软件
回复

使用道具 举报

2

主题

14

听众

1276

积分

版主

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

该用户从未签到

金币
5
威望
2222
帖子
258
精华
2

测试体验团

发表于 2015-5-2 13:15 |显示全部楼层
严重支持天远大佬无私分享,ribbon资料比较少,这文章真是及时雨啊。
To share my knowledge with the world
我的新浪博客
我的百度博客
回复

使用道具 举报

310

主题

35

听众

1万

积分

技术分享团员

Rank: 14Rank: 14Rank: 14Rank: 14

签到天数: 1070 天

[LV.10]以坛为家III

金币
3497
威望
22776
帖子
4220
精华
0

WPS粉丝团 技术分享团 测试体验团 重阳节勋章 优秀会员奖 技巧教程分享达人 乐于助人奖 活跃会员奖

发表于 2015-5-3 17:48 |显示全部楼层

好帖子,来支持了!
回复

使用道具 举报

0

主题

1

听众

3

积分

LV.1

Rank: 1

该用户从未签到

金币
3
威望
2
帖子
2
精华
0
发表于 2015-5-12 20:25 |显示全部楼层

好帖子,来支持了!
回复

使用道具 举报

0

主题

1

听众

12

积分

LV.1

Rank: 1

该用户从未签到

金币
2
威望
14
帖子
0
精华
0
谢谢无私分享
回复

使用道具 举报

0

主题

1

听众

6

积分

LV.1

Rank: 1

该用户从未签到

金币
3
威望
16
帖子
2
精华
0
发表于 2015-5-18 15:48 |显示全部楼层
不错,学习了
回复

使用道具 举报

0

主题

1

听众

4

积分

LV.1

Rank: 1

该用户从未签到

金币
3
威望
6
帖子
2
精华
0
发表于 2015-5-18 23:12 |显示全部楼层
认真学习!!!
回复

使用道具 举报

0

主题

1

听众

1

积分

LV.1

Rank: 1

该用户从未签到

金币
3
威望
2
帖子
0
精华
0
发表于 2015-5-20 17:27 |显示全部楼层
牛啊。。。。。。。。。。。。
回复

使用道具 举报

0

主题

0

听众

15

积分

LV.1

Rank: 1

该用户从未签到

金币
0
威望
1
帖子
3
精华
0
发表于 2015-6-23 21:34 |显示全部楼层
好强大,希望你能开发出更多更加强大的软件
回复

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 更多账号登录:

快速回帖:

fastpost

WPS论坛更新日志|WPS Office官方论坛     

GMT+8, 2017-11-24 06:26

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部