C#实现操作PPT动画窗格并插入音频文件

 更新时间:2023年10月24日 09:45:16   作者:初九之潜龙勿用  
这篇文章主要为大家详细介绍了如何利用C#实现操作PPT动画窗格并插入音频文件,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

系统环境

在 Windows Server 2019 操作系统上安装Office PowerPoint 2016或以上

安装 .netFramework4.7.1以上

开发工具 VS2019 语言 C#

基础配置

打开控制面板、管理工具、组件服务:

点击组件服务、计算机、我的电脑、DCOM配置 

找到Microsoft PowerPoint应用程序

选择属性、打开标识选项卡、选择下列用户选项,设置启动PPT应用的用户,点确定即可。

设计想法

由用户设计PPT及每页的动画效果,并以此为模板,与给定的一组音频文件,通过程序控制进行二次合成,插入的依据则是根据提供的动画标题进行搜索定位(标题可以模糊搜索)。这个设计想法可以参考文末补充内容

我们假设如下图,要在两组动画效果中,执行完成一个动画效果后插入一段音频讲解词,动画效果的标题为:

(1)组合6:对应插入P5_01.MP3讲解词。

(1)组合30:对应插入P5_02.MP3讲解词。

那么设计原理,就是遍历动画窗格的动画效果对象,记录对象的持续时间和延迟时间,插入音频后,则下一个动画效果的延迟时间根据上一动画效果对象的时间和音频的时间累积进行计算,并更改动画效果的开始条件,如下图:

如图,下一个动画效果对象的延迟时间重新计算,是根据“组合6" 和 "P5_01" 的时间进行累积计算得到的,以此类推。 

关键代码

组件库引入

基础代码

//创建PPT应用程序            
    POWERPOINT.Application objApp = new POWERPOINT.Application();
    POWERPOINT.Presentation objPresSet = null;
 
// 不显示弹出警告等,最小化窗口应用
    objApp.DisplayAlerts = POWERPOINT.PpAlertLevel.ppAlertsNone;
    objApp.WindowState = POWERPOINT.PpWindowState.ppWindowMinimized;
    
//打开文件,假设模板文件名为m1.pptx
    objPresSet = objApp.Presentations.Open("m1.pptx", Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoFalse);
 
//创建查找字典
    Dictionary<string, string> Medias = new Dictionary<string, string>();
    Medias.Add("组合6","P5_01.MP3");
    Medias.Add("组合30", "P5_02.MP3");

核心代码

//遍历所有的幻灯片对象            
for (int i = 1; i <= objPresSet.Slides.Count; i++)
{
    POWERPOINT.Slide slide = objPresSet.Slides[i];   //获取当前幻灯片对象
    if (slide.TimeLine.MainSequence.Count == 0) continue;  //如果该页没有动画效果则短路
    ...
}
//按提供的字典进行查找 
foreach (string[] pros in Medias)
{
    string f_likecaption = pros[0];  //要查找的动画标题
    mediafile = pros[1];             //对应要添加的MP3文件地址
    POWERPOINT.Shape wave=null;      //初始化一个声音变量,在PPT里也是一个Shape对象
    //遍历该页动画效果
    for (int j = 1; j <= slide.TimeLine.MainSequence.Count; j++)
    {
      POWERPOINT.Effect effect = slide.TimeLine.MainSequence[j];
       //如果查找到动画标题,则添加对应的声音文件
      if (((effect.Shape.Name + ":" + effect.DisplayName).IndexOf(f_likecaption.Trim()) != -1
      {
         wave = slide.Shapes.AddMediaObject2(mediafile);  //添加声音文件方法
         int  singleWaveLen = wave.MediaFormat.Length;    //记录声音的长度
         wave.Left = 60;                                  //shape对象的位置
         wave.AnimationSettings.Animate = Microsoft.Office.Core.MsoTriState.msoTrue; //设置该对象要成为动画
         wave.AnimationSettings.PlaySettings.PlayOnEntry = Microsoft.Office.Core.MsoTriState.msoTrue; //设置为允许自动播放
         wave.AnimationSettings.PlaySettings.HideWhileNotPlaying = Microsoft.Office.Core.MsoTriState.msoTrue; //设置播放期间是隐藏状态
         wave.AnimationSettings.AdvanceMode = POWERPOINT.PpAdvanceMode.ppAdvanceOnTime;//设置与上一动画同时
         wave.AnimationSettings.AnimationOrder = slide.TimeLine.MainSequence.Count;
//shape对象的索引位置,默认为最后一个,这个要根据业务逻辑进行调整 
         break;
      }
     }//for
    ..............
}//foreach pros
//其它关键属性 
POWERPOINT.Effect effect ;
effect.Timing.Duration  //返回或设置以秒为单位的动画长度
float WaveLen = float.Parse((singleWaveLen / 1000.0).ToString()); //声音长度需要换算成秒

这些代码我们提供了一些操作PPT相关的关键方法、属性,我们需要根据实际的业务情况进行修改,这里仅作参考。

知识补充

Craneoffice云PPT课件培训视频生成系统

本系统是Craneoffice.netFramework(基于.net开发的自研发框架)下的一个功能组件,它主要能够实现,在制作培训课件的后期,生成培训视频素材,是一款强劲的辅助设计工具。

用PPT编写培训视频课件制作的基本流程如下:

第一步,根据专业教材,编写PPT、脚本及动画指令文件

脚本及动画指令是一个WORD文件,请按标准的模板进行编写,如下图:

动画指令如下图,一个正确的动画指令描述,包括三个部分:

第一部分:动画效果部分标题

第二部分:分隔符,分隔符必须是横线加右箭头

第三部分:“讲解词”“起首语”。

如果有多条指令描述,请用回车换行即可。

第二步,将编写好的PPT和脚本文件,上传到云系统,得到语音文本素材包

第三步,使用您常用的语音合成工具,根据语音文本素材包,批量生成mp3声音素材包

第四步,在云系统批量上传mp3声音素材,系统会为您生成最终版的PPT文件,下载后即可以生成视频。

生成的基本原理及结果如下图举例,根据每页的语音讲解词,并根据动画指令的条数生成对应的语音条数,并根据动画时间轴进行计算和插入。

以上就是C#实现操作PPT动画窗格并插入音频文件的详细内容,更多关于C#操作PPT的资料请关注脚本之家其它相关文章!

相关文章

  • C语言使用getch()读取方向键

    C语言使用getch()读取方向键

    getch()是编程中所用的函数,这个函数是一个不回显函数,当用户按下某个字符时,函数自动读取,无需按回车,有的C语言命令行程序会用到此函数做游戏,但是这个函数并非标准函数,要注意移植性
    2021-07-07
  • c#对xml增删改查操作示例

    c#对xml增删改查操作示例

    本文主要介绍c#对xml增删改查操作的示例,大家参考使用吧
    2014-01-01
  • Unity3D 单例模式和静态类的使用详解

    Unity3D 单例模式和静态类的使用详解

    这篇文章主要介绍了Unity3D 单例模式和静态类的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • 基于C#实现获取本地磁盘目录

    基于C#实现获取本地磁盘目录

    这篇文章主要为大家详细介绍了如何利用C#实现获取本地磁盘目录的功能,文中的示例代码讲解详细,对我们学习C#有一定的帮助,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-12-12
  • 用C#对ADO.NET数据库完成简单操作的方法

    用C#对ADO.NET数据库完成简单操作的方法

    用C#对ADO.NET数据库完成简单操作的方法...
    2007-03-03
  • C#从前面或后面按指定数量删除字符串

    C#从前面或后面按指定数量删除字符串

    这篇文章介绍了C#从前面或后面按指定数量删除字符串的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • 基于C#调用c++Dll结构体数组指针的问题详解

    基于C#调用c++Dll结构体数组指针的问题详解

    下面小编就为大家分享一篇基于C#调用c++Dll结构体数组指针的问题详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • C#中调用命令行cmd开启wifi热点的实例代码

    C#中调用命令行cmd开启wifi热点的实例代码

    最近想在win7上开启wifi热点,于是就弄出下面这个小东西,里面涉及如何在控制台上输入命令,分享一下。首先在VS中创建一个window窗口,然后创建两个四个button,两个输入框
    2013-04-04
  • C#使用Dll的几种方法示例

    C#使用Dll的几种方法示例

    使用 DLL(动态链接库)是 C# 开发中常见的任务之一,DLL 文件包含可以在运行时加载的代码和数据,允许程序共享功能和资源,降低程序的内存占用并促进代码的复用,本篇文章将深入探讨 C# 中使用 DLL 的多种方法,并提供相关代码示例,需要的朋友可以参考下
    2024-10-10
  • C#编程简单实现生成PDF文档的方法示例

    C#编程简单实现生成PDF文档的方法示例

    这篇文章主要介绍了C#编程简单实现生成PDF文档的方法,结合实例形式分析了C#生成PDF文档的具体步骤与相关实现技巧,需要的朋友可以参考下
    2017-07-07

最新评论