文档章节

.net开发word office addin外接程序(C#)

李朝强
 李朝强
发布于 2019/12/18 13:06
字数 637
阅读 49
收藏 1

3 月,跳不动了?>>>

本文介绍通过.Net平台的Office外接程序,实现自定义插件工具。

采用的工具:VS2017     语言:C#   目标:word2010

首先在VS中新建一个AddIn项目,基于VSTO的。

这里,我新建了一个WordAddIn2010的项目:

这时候,VS会自动生ThisAddIn这个类,让我们看看ThisAddIn里面的代码,这里我增加了一个CardPannel的用户控件:

接下里,我们再新建Ribbon可视化设计器:

这时候,我们打开刚创建的Ribbon类,可以看到如下图:

从这个图上可以看到,这个很像我们熟悉的Office的顶部外观。

接下来,我们可以利用winform的工具箱,托拽一个Button按钮控件,这里我添加了一个名为"手动组卷"的按钮。再右侧,我又添加了一个选项卡“组卷”:

里面添加了2个按钮,我在制作答题卡这个按钮上,做了一个实例程序,用于自动生成答题卡:

首先新建一个用户控件,CardPannel,外观如下图:

在“生成答题卡”按钮的单击事件,添加了生成选项的代码:

还记得刚开始的ThisAddIn这个类吗,里面有2个事件:ThisAddIn_Startup、ThisAddIn_Shutdown等,在ThisAddIn_Startup事件中,我添加了一个用户控件,就是刚新加的CardPnnel控件。

        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
            this.CustomTaskPanes.Add(new CardPannel(), "点题自定义工具");//添加工具
        }

这样就把一个用户控件,添加到了外接程序中,然后在Ribbon类中,

“制作答题卡”按钮的单机事件:

        /// <summary>
        /// 制作答题卡
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>

        private void button1_Click(object sender, RibbonControlEventArgs e)
        {
            //自定义工具
            var cardPannel = Globals.ThisAddIn.CustomTaskPanes[0];
            cardPannel.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionRight;
            cardPannel.Visible = true;
            cardPannel.Control.Show();

        }

点击按钮的时候,会在word的右侧,弹出工具(这里也就是我刚才定义的用户控件CardPnnel)。

接下来我们运行看看效果吧:

这里我们点击顶部组卷选项卡中的制作答题卡功能,就会在word右侧,弹出如上图右侧的自定义工具,点击生成答题卡按钮:

这只是一个简单的demo,今天就先写到这里吧!

© 著作权归作者所有

李朝强
粉丝 93
博文 303
码字总数 154818
作品 0
郑州
产品经理
私信 提问
加载中

评论(0)

word2007插件开发经验备忘1--如何开发word插件

最近做了word2007的插件开发(VBA开发)。虽然还没有完全写完,但是感觉有必要写一些东西了,于是就记录下来.... office的开发分为程序级开发和文档级开发,程序集开发的典型代表就是传说中的...

王二狗子11
2018/01/08
0
0
MathType与Office 2016的兼容问题如何解决

现在使用MathType数学公式编辑器的用户越来越多,使用它可以很方便地编辑公式,但是有朋友发现MathType与Office 2016不能够很好地兼容使用,那么怎样能够使MathType数学公式编辑器与Office ...

MathType
2015/11/09
3.6K
0
当前不会命中断点,还没有加载该文档加载任何符号

断点调试是我编程时经常用到的,但有的程序并一定有Windows界面,而是附加到其他程序中的,如ArcGIS的Addin开发。当我在代码中插入断点调试无效(断点不起作用),并警告"当前不会命中断点,...

gisweis
2015/04/17
0
0
利用VSTO实现的office后门

      0x00 前言   最近看了一篇文章《VSTO: The Payload Installer That Probably Defeats Your Application Whitelisting Rules》,介绍了利用VSTO实现Office后门的方法,我在之前的...

嘶吼RoarTalk
2018/03/05
0
0
.NET开发工具--SharpDevelop

JavaIDE领域,Eclipse现在的势头可谓如日中天。殊不知,在.NET领域也有一个与Eclipse极其类似的开源IDE,它就是SharpDevelop。 SharpDevelop是一个用于开发C#或者VB.NET项目而设计的一个编辑...

匿名
2008/09/17
3.7W
2

没有更多内容

加载失败,请刷新页面

加载更多

什么是Android上的“上下文”? - What is 'Context' on Android?

问题: In Android programming, what exactly is a Context class and what is it used for? 在Android编程中, Context类到底是什么?它的用途是什么? I read about it on the developer......

技术盛宴
49分钟前
18
0
OkHttp配置HTTPS访问+服务器部署

1 概述 OkHttp配置HTTPS访问,核心为以下三个部分: sslSocketFactory() HostnameVerifier X509TrustManager 第一个是ssl套接字工厂,第二个用来验证主机名,第三个是证书信任器管理类.通过OkHtt...

氷泠
今天
20
0
华为P40发布:搭载HMS硬刚谷歌,未涨价抢全球高端机市场

  文连线 Insight,作者向阳,编辑水笙   3 月 26 日晚,华为消费者业务 CEO 余承东登上台,以熟悉的英文口音开启了华为发布会,他说,“这就是我们的 P40 系列。”   以往华为P系列通...

水果黄瓜
今天
28
0
如何从Java中的字符串值获取枚举值? - How to get an enum value from a string value in Java?

问题: Say I have an enum which is just 说我有一个枚举 public enum Blah { A, B, C, D} and I would like to find the enum value of a string, for example "A" which would be B......

javail
今天
9
0
OSChina 周一乱弹 —— 小姐姐,这tm不是犬耳娘吗!你认错了吧

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《Drip Drip Drip》- 音乐治疗 手机党少年们想听歌,请使劲儿戳(这里) @-Eric- ...

小小编辑
今天
46
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部