C# 用Microsoft.Office.Interop.PowerPoint类库操作PPT
前言:最近由于项目需求,需要使用此类库对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);
获取文字内容
- 所有文字
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()); } } }
- 指定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相关推荐
- C#使用Microsoft.office.interop.PowerPoint生成PPT
文章目录 前言 一.步骤 1.引入库 2.创建PPT 3.创建PPT中的幻灯片 4.生成标题 5.生成目录 5.创建表格 6.保存 总结 前言 开发的一个系统需要用到自动生成ppt,网上的例子比较少, ...
- Microsoft.Office.Interop.PowerPoint 根据模板导出PowerPoint
环境:Visual Studio 2015 场景:现有一个PPT模板,需要把业务数据插到PPT里面. 思路:在PPT模板里面做好标识,然后建一个Dictionary,key是PPT里面的标识,valu ...
- C#日常开发随手记------COM组件(Microsoft.Office.Interop.Excel)操作excel、如何创建\删除文件夹
文章中写了点过程有点啰嗦,想直接看代码的直接下拉看加粗标题处 第一次使用COM组件操作excel,遇到了点坑,也有些感触. 一般来说操作excel,我比较常用的是OleDB,但是OleDB需要安装Ac ...
- 关于.net Microsoft.Office.Interop.Word组建操作word的问题,如何控制word表格单元格内部段落的样式。...
控制word表格单元格内部文字样式.我要将数据导出到word当中,对于word表格一个单元格中的一段文字,要设置不同的样式,比如第一行文字作为标题要居中,加粗,第二行为正常的正文. 代码如下 publ ...
- VB.NET 使用Microsoft.Office.Interop进行EXCEL操作时彻底关闭EXCEL进程
Imports System.Runtime.InteropServices Imports Microsoft.Office.Interop Public Class 关闭EXCEL'' TODO: ...
- c#生成PPT总结(Microsoft.Office.Interop)
引用自:https://bbs.csdn.net/topics/391937345 1.在项目中添加引用 Microsoft PowerPoint 14.0 Object Library 2. usi ...
- 无法引用Microsoft.Office.Interop.Excel的解决
微软MSDN文章: http://msdn.microsoft.com/zh-cn/library/aa159923(office.11).aspx 下载 在 Microsoft Office 200 ...
- 使用Microsoft.Office.Interop.PowerPoin遥控PPT
Microsoft.Office.Interop.PowerPoin操作PPT 主窗体,填写ppt路径,打开ppt 打开ppt后,可用代码操作ppt 可获取每页PPT截图,并获取对应小节名称,备注等 ...
- c#操作excel 使用excel自带类库Microsoft.Office.Interop.Excel
使用条件:安装excel,在安装位置找到库Microsoft.Office.Interop.Excel.dll添加引用 using Excel=Microsoft.Office.Interop.Exc ...
最新文章
- ViewPager+Fragment实现TabHost(可复用的类)
- 2020计算机考研初试考试先后顺序,【图片】2020考研,老学长教你如何规划!【计算机考研吧】_百度贴吧...
- 【spring boot】【spring cloud】异常:找不到方法HikariDataSource.getMetricsTrackerFactory()
- ai怎么渐变颜色_Ai渐变插画怎么丰富细节
- 结构数据类型的用法 值类型 c# 1231
- GTK 4.0 图形工具包正式发布
- Maven系列--maven-compiler-plugin的使用、Maven之Surefire插件
- 单片机软件反破解 Hex反破解 破解后的hex不能量产
- WPF NotifyIcon使用
- 批量生成二维码、打印
- LMD VCL Complete 2020版功能推进
- WhatsApp API介绍
- 报表引擎终于做出来了!!!
- 交易订单处理失败,请稍后再试(ali64)
- windows系统命令大全
- IBM获5896项专利连续18年蝉联年度冠军
- MM要学会的71个烹饪技巧
- 关于医保你可能不了解的
- K折交叉验证-python
- Mycat(3):mycat的安装
热门文章
- 最全的解酒方法-----让你千杯不...
- 齐岳:环糊精修饰Fe3O4磁性纳米复合材料|十二烷基硫酸钠(SDS)将Fe3O4磁性纳米粒子定量地修饰到多壁碳纳米管
- GA-PH67-UD3-B3换主板
- 阿里图标库iconfont如何使用
- Jzoj5426 摘Galo
- 萌新成长计划(开篇章)
- 鸿蒙os2.0主页,华为鸿蒙os2.0系统支持的手机型号,华为鸿蒙系统官方下载入口
- linux ftdi 虚拟,linux ftdi驱动
- 分别编写两个类Point2D,Point3D来表示二维空间和三维空间的点
- ras私钥c#转java_C#和JAVA的RSA密钥、公钥转换