VSTO之PowerPoint(PPT)插件开发常用API汇总
2022/3/5 23:17:07
本文主要是介绍VSTO之PowerPoint(PPT)插件开发常用API汇总,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Office插件开发解决方案选择
最近由于工作原因,一直在看开发自定义的Office插件的解决方案,总共有如下几种
- VBA --- Visual Basic的一种宏语言,基本放弃考虑
- VSTO --- VB的替代品,目前主流office插件的实现方式
- Office add-ins --- 使用主流的web技术(HTML, CSS, and JavaScript)来操作office文档
这里说下我最后选择了用VSTO
来实现需求。首先VBA
肯定被排除了,表示不会VB
。然后Office add-ins
由于自身的特性不太符合需求所以也放弃了,介绍下Office add-ins
是啥个玩意。
使用Visual Studio 2017
创建一个Office add-ins
项目,系统自动会创建一个包含两个项目的解决方案。(传送门)
项目 | 描述 |
加载项目 | 仅包含XML清单文件,其中包含描述加载项的所有设置。这些设置可帮助Office主机确定何时应激活加载项以及加载项应显示的位置。 |
Web应用程序项目 | 包含加载项的内容页面,包括开发支持Office的HTML和JavaScript页面所需的所有文件和文件引用。在开发加载项时,Visual Studio会在本地IIS服务器上托管Web应用程序。当准备发布加载项时,需要将此Web应用程序项目部署到Web服务器。 |
这也就意味着用户的插件界面都是通过 Http
请求到服务器上获取的,如果有一些功能(例如统一字体,导出图片等)是需要离线状态也可以运行,那这个解决方案就没法满足了。所以最后我选择了 VSTO
。
VSTO开发PPT插件之API简介
最开始我只是想开一篇文章记录下开发过程中常用的那些API(真的不好找啊!),最后啰里啰嗦的扯了很多背景介绍,终于轮到我本来想记录的东西了,希望后来踩坑的同学能够开发的顺畅些。
常用的获取操作对象的API
//获取当前ppt中所有的幻灯片 Globals.ThisAddIn.Application.ActivePresentation.Slides; //获取当前选中的ppt幻灯片 var activeSlide = (Slide)Globals.ThisAddIn.Application.ActiveWindow.View.Slide; //获取当前选中幻灯片的Index,默认从1开始 activeSlide.SlideIndex //在当前选中幻灯片前插入新的幻灯片--代码提示中没有F12进去才找到的方法 slides.Add(activeSlide.SlideIndex, PpSlideLayout.ppLayoutCustom); //获取当前窗体中的选定对象 Globals.ThisAddIn.Application.ActiveWindow.Selection;
复制粘贴操作幻灯片
//选择复制的silde(可以为数组new int[2]{3,5}}) Globals.ThisAddIn.Application.ActivePresentation.Slides.Range(1).Copy(); //在指定位置粘贴slide Globals.ThisAddIn.Application.ActivePresentation.Slides.Paste(1); //复制别的文档中的slide //在1位置插入指定路径ppt的Index 2-5的幻灯片 Globals.ThisAddIn.Application.ActivePresentation.Slides.InsertFromFile("c:\ppt\sales.ppt", 1, 2, 5);
修改主题字体(统一字体功能)
//获取主题 var master = Globals.ThisAddIn.Application.ActivePresentation.SlideMaster; //修改中文字体 //“标题”中的中文字体 master.Theme.ThemeFontScheme.MajorFont.Item(Microsoft.Office.Core.MsoFontLanguageIndex.msoThemeEastAsian).Name = "新宋体"; //“内容”中的中文字体 master.Theme.ThemeFontScheme.MinorFont.Item(Microsoft.Office.Core.MsoFontLanguageIndex.msoThemeEastAsian).Name = "新宋体"; //修改英文字体 //“标题”中的英文字体 master.Theme.ThemeFontScheme.MajorFont.Item(Microsoft.Office.Core.MsoFontLanguageIndex.msoThemeLatin).Name = "新宋体"; //“内容”中的英文字体 master.Theme.ThemeFontScheme.MinorFont.Item(Microsoft.Office.Core.MsoFontLanguageIndex.msoThemeLatin).Name = "新宋体";
插入图片
//在当前选中幻灯片左上角插入图片,位置和大小可以调整 //activeSlide看我上面的获取方式 //picUrl可以是网络地址或本机物理地址 activeSlide.Shapes.AddPicture(picUrl, Microsoft.Office.Core.MsoTriState.msoTrue, Microsoft.Office.Core.MsoTriState.msoTrue, 0, 0); //选中一个文本框或图片框,插入背景图片 //获取第一个选中的“形状” var shape = Globals.ThisAddIn.Application.ActiveWindow.Selection.ShapeRange[0]; sharp.Fill.UserPicture(picUrl);
这篇关于VSTO之PowerPoint(PPT)插件开发常用API汇总的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?