前言:最近由于项目需求,需要使用此类库对PPT进行操作
1.引用 Microsoft.Office.Interop.PowerPoint和 Microsoft.Office.Core
2.PPT操作

打开PPT


//PPT应用程序变量Application application= = new Microsoft.Office.Interop.PowerPoint.Application();//PPT文档变量,打开PPT ,path为PPT文档路径Presentation ppt = application.Presentations.Open(path, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse);

获取文字内容

  1. 所有文字
List<string> StrList=new List<string>();foreach (Microsoft.Office.Interop.PowerPoint.Slide slide in ppt.Slides){            //遍历所有元素foreach (Microsoft.Office.Interop.PowerPoint.Shape shape in slide.Shapes){//判断是否是文字if (shape.HasTextFrame == OFFICECORE.MsoTriState.msoTrue && shape.TextFrame.HasText == OFFICECORE.MsoTriState.msoTrue){StrList.add(shape.TextFrame.TextRange.Text.ToString());                           }                   }                                   }
  1. 指定Slides的文字内容
List<string> list = new List<string>();    Microsoft.Office.Interop.PowerPoint.Slide slid = ppt.Slides[Index];//遍历所有元素foreach (Microsoft.Office.Interop.PowerPoint.Shape shape in slid.Shapes){//判断元素是文字if (shape.HasTextFrame == OFFICECORE.MsoTriState.msoTrue && shape.TextFrame.HasText == OFFICECORE.MsoTriState.msoTrue){list.Add(shape.TextFrame.TextRange.Text.ToString());}}             return list;

获取指定幻灯片的所有图片

Microsoft.Office.Interop.PowerPoint.Slide slid = ppt.Slides[Index];//遍历所有元素            foreach (Microsoft.Office.Interop.PowerPoint.Shape shape in slid.Shapes){           //判断是否是图片if (shape.Type == OFFICECORE.MsoShapeType.msoPicture){//复制到剪切板shape.Copy();//拿到图片数据                          Image img = (Image)Clipboard.GetData(DataFormats.Bitmap); }}

获取指定幻灯片中的表格,转换成DataTable

//找到指定Index的元素Microsoft.Office.Interop.PowerPoint.Slide slide = ppt.Slides[Index];//遍历所有元素foreach (Microsoft.Office.Interop.PowerPoint.Shape shape in slide.Shapes){//判断是否是表格if (shape.HasTable == MsoTriState.msoTrue){DataTable dt = new DataTable();//遍历元素,转换成dataTablefor (int k = 0; k < shape.Table.Columns.Count; k++){DataColumn dc = new DataColumn();dt.Columns.Add(dc);}for (int i = 0; i < shape.Table.Rows.Count; i++){DataRow dr = dt.NewRow();for (int j = 0; j < shape.Table.Columns.Count; j++){dr[j] = shape.Table.Cell(i + 1, j + 1).Shape.TextFrame.TextRange.Text;}dt.Rows.Add(dr);}                     }}

向指定幻灯片插入文本

/// <summary>/// 向指定幻灯片插入文本/// </summary>/// <param name="ppt"></param>/// <param name="Index">幻灯片索引</param>/// <param name="text">文本内容</param>/// <param name="x">横坐标</param>/// <param name="y">纵坐标</param>/// <param name="width">宽</param>/// <param name="height">高</param>public void InsertText(int Index, string text, float x, float y, float width, float height){try{Microsoft.Office.Interop.PowerPoint.Slide slide = ppt.Slides[Index];//添加ShapeMicrosoft.Office.Interop.PowerPoint.Shape shape = slide.Shapes.AddShape(OFFICECORE.MsoAutoShapeType.msoShapeRectangle,//下面设置宽高和位置x,y,width,height);//控制填充色为透明shape.Fill.Transparency = 1;//控制边框颜色为黑色shape.Line.ForeColor.RGB = System.Drawing.ColorTranslator.ToWin32(System.Drawing.Color.FromArgb(0, 0, 0));//文字加粗shape.TextFrame.TextRange.Font.Bold = MsoTriState.msoTrue;//字体为黑色shape.TextFrame.TextRange.Font.Color.RGB = System.Drawing.ColorTranslator.ToWin32(System.Drawing.Color.FromArgb(0, 0, 0));//字体shape.TextFrame.TextRange.Font.NameFarEast = "微软雅黑";//水平对齐shape.TextFrame.TextRange.ParagraphFormat.Alignment = Microsoft.Office.Interop.PowerPoint.PpParagraphAlignment.ppAlignLeft;//插入的文本shape.TextFrame.TextRange.Text = text;//保存ppt.Save();}catch (Exception ex){log.Error(ex);}}

插入图片

/// <summary>/// 插入图片/// </summary>/// <param name="ppt"></param>/// <param name="Index">索引</param>/// <param name="imagePath">图片路径</param>/// <param name="x">横坐标</param>/// <param name="y">纵坐标</param>/// <param name="width">宽</param>/// <param name="height">高</param>public void InsertImage(int Index, string imagePath, float x, float y, float width, float height){try{//保存图片ppt.Slides[Index].Shapes.AddPicture(//图片路径imagePath,OFFICECORE.MsoTriState.msoFalse,OFFICECORE.MsoTriState.msoTrue,//插入图片距离左边长度(float)(x),//插入图片距离顶部高度(float)(y),//插入图片的宽度(float)(width),//插入图片的高度(float)(height));ppt.Save();}catch (Exception ex){log.Error(ex);}}

参阅资料

官方文档
https://docs.microsoft.com/zh-cn/office/vba/api/overview/powerpoint/object-model

设置背景色、字体颜色、PPT转图片
https://blog.csdn.net/qq_35398517/article/details/80184703

C# PPT的操作
https://blog.csdn.net/XiaoYanZi_0521/article/details/80191526?utm_medium=distribute.pc_relevant_ask_down.none-task-blog-BlogCommendFromBaidu-2.nonecase&depth_1-utm_source=distribute.pc_relevant_ask_down.none-task-blog-BlogCommendFromBaidu-2.nonecas

https://www.cnblogs.com/hhhh2010/p/4630738.html

C# 用Microsoft.Office.Interop.PowerPoint类库操作PPT相关推荐

  1. C#使用Microsoft.office.interop.PowerPoint生成PPT

    文章目录 前言 一.步骤 1.引入库 2.创建PPT 3.创建PPT中的幻灯片 4.生成标题 5.生成目录 5.创建表格 6.保存 总结 前言 开发的一个系统需要用到自动生成ppt,网上的例子比较少, ...

  2. Microsoft.Office.Interop.PowerPoint 根据模板导出PowerPoint

    环境:Visual Studio 2015 场景:现有一个PPT模板,需要把业务数据插到PPT里面. 思路:在PPT模板里面做好标识,然后建一个Dictionary,key是PPT里面的标识,valu ...

  3. C#日常开发随手记------COM组件(Microsoft.Office.Interop.Excel)操作excel、如何创建\删除文件夹

    文章中写了点过程有点啰嗦,想直接看代码的直接下拉看加粗标题处 第一次使用COM组件操作excel,遇到了点坑,也有些感触. 一般来说操作excel,我比较常用的是OleDB,但是OleDB需要安装Ac ...

  4. 关于.net Microsoft.Office.Interop.Word组建操作word的问题,如何控制word表格单元格内部段落的样式。...

    控制word表格单元格内部文字样式.我要将数据导出到word当中,对于word表格一个单元格中的一段文字,要设置不同的样式,比如第一行文字作为标题要居中,加粗,第二行为正常的正文. 代码如下 publ ...

  5. VB.NET 使用Microsoft.Office.Interop进行EXCEL操作时彻底关闭EXCEL进程

    Imports System.Runtime.InteropServices Imports Microsoft.Office.Interop Public Class 关闭EXCEL'' TODO: ...

  6. c#生成PPT总结(Microsoft.Office.Interop)

    引用自:https://bbs.csdn.net/topics/391937345 1.在项目中添加引用 Microsoft PowerPoint 14.0 Object Library 2. usi ...

  7. 无法引用Microsoft.Office.Interop.Excel的解决

    微软MSDN文章: http://msdn.microsoft.com/zh-cn/library/aa159923(office.11).aspx 下载 在 Microsoft Office 200 ...

  8. 使用Microsoft.Office.Interop.PowerPoin遥控PPT

    Microsoft.Office.Interop.PowerPoin操作PPT 主窗体,填写ppt路径,打开ppt 打开ppt后,可用代码操作ppt 可获取每页PPT截图,并获取对应小节名称,备注等 ...

  9. c#操作excel 使用excel自带类库Microsoft.Office.Interop.Excel

    使用条件:安装excel,在安装位置找到库Microsoft.Office.Interop.Excel.dll添加引用 using Excel=Microsoft.Office.Interop.Exc ...

最新文章

  1. ViewPager+Fragment实现TabHost(可复用的类)
  2. 2020计算机考研初试考试先后顺序,【图片】2020考研,老学长教你如何规划!【计算机考研吧】_百度贴吧...
  3. 【spring boot】【spring cloud】异常:找不到方法HikariDataSource.getMetricsTrackerFactory()
  4. ai怎么渐变颜色_Ai渐变插画怎么丰富细节
  5. 结构数据类型的用法 值类型 c# 1231
  6. GTK 4.0 图形工具包正式发布
  7. Maven系列--maven-compiler-plugin的使用、Maven之Surefire插件
  8. 单片机软件反破解 Hex反破解 破解后的hex不能量产
  9. WPF NotifyIcon使用
  10. 批量生成二维码、打印
  11. LMD VCL Complete 2020版功能推进
  12. WhatsApp API介绍
  13. 报表引擎终于做出来了!!!
  14. 交易订单处理失败,请稍后再试(ali64)
  15. windows系统命令大全
  16. IBM获5896项专利连续18年蝉联年度冠军
  17. MM要学会的71个烹饪技巧
  18. 关于医保你可能不了解的
  19. K折交叉验证-python
  20. Mycat(3):mycat的安装

热门文章

  1. 最全的解酒方法-----让你千杯不...
  2. 齐岳:环糊精修饰Fe3O4磁性纳米复合材料|十二烷基硫酸钠(SDS)将Fe3O4磁性纳米粒子定量地修饰到多壁碳纳米管
  3. GA-PH67-UD3-B3换主板
  4. 阿里图标库iconfont如何使用
  5. Jzoj5426 摘Galo
  6. 萌新成长计划(开篇章)
  7. 鸿蒙os2.0主页,华为鸿蒙os2.0系统支持的手机型号,华为鸿蒙系统官方下载入口
  8. linux ftdi 虚拟,linux ftdi驱动
  9. 分别编写两个类Point2D,Point3D来表示二维空间和三维空间的点
  10. ras私钥c#转java_C#和JAVA的RSA密钥、公钥转换