VSTO简介及简单使⽤
由于⼯作原因,要调研⼀下office PPT插件,可能接下来要做⼀块,先写个东西保留下。
以下部分⽂字内容参考了前辈博客。
参考链接:传送门
开发⾃定义的Office插件的解决⽅案,总共有如下⼏种:
VBA --- Visual Basic的⼀种宏语⾔
VSTO --- VB的替代品,⽬前主流office插件的实现⽅式
Office add-ins --- 使⽤主流的web技术(HTML, CSS, and JavaScript)来操作office⽂档
VBA是微软提出的第⼀种Office开发解决⽅案,现在落后了;后来微软发布了平台,并推出了新千年的新语⾔:C#,并适时推出了VSTO,也是⼀直在⼴泛使⽤的;⽽Office add-ins创建的插件,插件界⾯都是通过Http请求到服务器上获取的,如果有⼀些功能(例如统⼀字体,导出图⽚等)是需要离线状态也可以运⾏,那这个解决⽅案就没法满⾜了。
所以最后选择了VSTO。
VSTO全称Visual Studio Toolfor Office,是平台下的Office开发技术,是可以让我们针对现有的Office程序进⾏功能扩展;它就是⼀个创建⾃定义Office应⽤程序的Visual Studio⼯具包,这个⼯具包⾥⾯提供了很多类库来让我们调⽤,然后⼯具包中类再与Office客户端进⾏交互。在⼯作或⽣活中其实我们或多或少⽤到过VSTO插件,例如安装有道词典/WPS会在Office程序中嵌⼊插件程序。
开发环境:win + Visual Studio(VSTO 被内置到VS中)。
Visual Studio 已经打包了使⽤VSTO创建Office解决⽅案所需要的全部VSTO 组件。当安装Visual Studio 时,所有相关的安装,包括VSTO 的项⽬模板、Office开发引⽤和其它组件,都被安装并完全整合到新的Visual Studio 开发环境中。
开发语⾔:C#
详细介绍:
创建⼀个插件程序:
从图中可以看出创建的Office应⽤程序⼤致有三类:插件(Add-in),⽂档级别(如Excel Workbook)和模版(Template)。创建的
Add-in和模版应⽤程序即应⽤程序级别的定制程序,它指的是对整个应⽤程序都可⽤。⽂档级别的应⽤程序指的是程序代码只关联到特定的⽂档⼆不是整个应⽤程序。咱们⽤插件(Add-in)即可。
调试,在项⽬属性页中绑定PPT程序,运⾏即可看到效果。
右键项⽬-》添加-》组件,选择功能区(可视化设计器),即给PPT添加⼀个TAB功能页;
⽐较类似于MFC.
⼤体上是这么做,创建新的幻灯⽚,添加⽂本框,图⽚等调⽤接⼝即可。
简单实现了消息对话框、⾃定义对话框、播放、播放中上⼀页、播放中下⼀页、新建⼀张幻灯⽚、获取当前页码。
主要代码:
上⾯所⽤代码:
private void btnMsg_Click(object sender, RibbonControlEventArgs e)
{
System.Windows.Forms.MessageBox.Show("这是按钮测试!");
}
private void btnDlg_Click(object sender, RibbonControlEventArgs e)
{
FormTest objFormTest = new FormTest();
objFormTest.Show();
}
private void btnStartPlay_Click(object sender, RibbonControlEventArgs e)
{
Microsoft.Office.Interop.PowerPoint.Slides MySlides =
Globals.ThisAddIn.Application.ActivePresentation.Slides;
Microsoft.Office.Interop.PowerPoint.Slide MySlide = null;//PPT中的幻灯⽚
MySlide = Globals.ThisAddIn.Application.ActiveWindow.View.Slide; //获取当前选中的幻灯⽚
POWERPOINT.Presentations objPresSets = null;
objPresSets = Globals.ThisAddIn.Application.Presentations;
POWERPOINT.SlideShowSettings MySSS;
MySSS = objPresSets[1].SlideShowSettings;
MySSS.StartingSlide = 1;
MySSS.EndingSlide = 3;
MySSS.Run();
System.Threading.Thread.Sleep(2000);
POWERPOINT.Presentation objPresSet = null;
objPresSet = Globals.ThisAddIn.Application.ActivePresentation;
objPresSet.SlideShowWindow.View.Next();
}
private void btnNewSlide_Click(object sender, RibbonControlEventArgs e)
visual basic pdf{
Microsoft.Office.Interop.PowerPoint.Slides MySlides = Globals.ThisAddIn.Application.ActivePresentation.Slides; Microsoft.Office.Interop.PowerPoint.Slide MySlide = null;//PPT中的幻灯⽚
MySlide = Globals.ThisAddIn.Application.ActiveWindow.View.Slide; //获取当前选中的幻灯⽚
MySlides.Add(MySlide.SlideIndex+1, PpSlideLayout.ppLayoutCustom);
}
private void btnGetCurPageNum_Click(object sender, RibbonControlEventArgs e)
{
Microsoft.Office.Interop.PowerPoint.Slide MySlide = null;//PPT中的幻灯⽚
MySlide = Globals.ThisAddIn.Application.ActiveWindow.View.Slide; //获取当前选中的幻灯⽚
int nNum = MySlide.SlideNumber;
System.Windows.Forms.MessageBox.Show(nNum.ToString());
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论