【ArcGIS Pro二次开发】(71):PPT文件操作方法汇总

以下操作都要用到【Microsoft.Office.Interop.PowerPoint】,确保安装并引用。


1、打开PPT文件

cs 复制代码
// 打开PPT
Microsoft.Office.Interop.PowerPoint.Application pptApp = new Microsoft.Office.Interop.PowerPoint.Application();

Presentation ppt = pptApp.Presentations.Open(pptPath, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse);

2、添加幻灯片

cs 复制代码
// 要添加的幻灯片的页码
int index = 4;
//添加幻灯片
Slide slide2 = ppt.Slides.Add(index, PpSlideLayout.ppLayoutBlank);

3、获取指定的幻灯片

cs 复制代码
// index为页码,从1开始,和PPT上显示的页码一致
Slide initSlide = ppt.Slides[index];

4、获取所有要素Shape

cs 复制代码
// 遍历所有幻灯片
foreach (Slide slide in ppt.Slides)
{
    // 遍历所有元素
    foreach (Shape shape in slide.Shapes)
    {
        // TODO
    }
}

5、获取所有文字

cs 复制代码
// 获取文字
List<string> stringList = new List<string>();
// 遍历所有幻灯片
foreach (Slide slide in ppt.Slides)
{
    // 遍历所有元素
    foreach (Shape shape in slide.Shapes)
    {
        if (shape.HasTextFrame == MsoTriState.msoTrue && shape.TextFrame.HasText == MsoTriState.msoTrue)
        {
            // 获取文字
            stringList.Add(shape.TextFrame.TextRange.Text.ToString());
        }
    }
}

6、获取所有图片,并保存

cs 复制代码
foreach (Shape shape in initSlide.Shapes)
{
    if (shape.Type == MsoShapeType.msoPicture)
    {
        // 复制到剪贴板
        shape.Copy();
        // 获取图片数据
        Image img = (Image)System.Windows.Forms.Clipboard.GetData(System.Windows.Forms.DataFormats.Bitmap);
        // 保存图片
        img.Save(@"C:\Users\Administrator\Desktop\new.png");
    }
}

7、插入一个文本框

cs 复制代码
//添加Shape
float x = 100;
float y = 100;
float width = 500;
float height = 300;
string text = "这是一个新插入的文本!!!!!!!!!";

Shape shape = slide.Shapes.AddShape(MsoAutoShapeType.msoShapeRectangle, x, y, width, height);

//保存
ppt.Save();

8、Shape属性设置

cs 复制代码
//控制填充色为透明
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;
//字体大小
shape.TextFrame.TextRange.Font.Size=40;
//字体居中
shape.TextFrame.TextRange.ParagraphFormat.Alignment = PpParagraphAligrument.ppAlignCenter;
//文本框内容垂直居中
shape.TextFrame.VerticalAnchor = MsoVerticalAnchor.msoAnchorMiddle;

9、插入一个图片

cs 复制代码
// 获取当前工程中的所有Layouts
IEnumerable<LayoutProjectItem> layouts = Project.Current.GetItems<LayoutProjectItem>();
// 按名称获取
LayoutProjectItem layoutItem = Project.Current.GetItems<LayoutProjectItem>().FirstOrDefault(item => item.Name.Equals("MyLayout"));

10、保存、另存为

cs 复制代码
// 获取当前工程中的所有Layouts
IEnumerable<LayoutProjectItem> layouts = Project.Current.GetItems<LayoutProjectItem>();
// 按名称获取
LayoutProjectItem layoutItem = Project.Current.GetItems<LayoutProjectItem>().FirstOrDefault(item => item.Name.Equals("MyLayout"));
相关推荐
非科班Java出身GISer1 天前
ArcGIS JS 基础教程(38):StreamLayer 实时流数据图层
arcgis·arcgis js·arcgis js 流图层·streamlayer·arcgis 流数据图层·arcgis 实时流数据图层
赵钰老师2 天前
基于ArcGIS Pro、R、INVEST等多技术融合下生态系统服务权衡与协同动态分析
python·arcgis·数据分析·r语言
AcaDesign3 天前
上海市科技奖申报答辩ppt制作案例_科技进步奖ppt模板_技术发明奖ppt设计_自然科学奖ppt美化
大数据·科技·powerpoint
梦想的初衷~3 天前
MaxEnt 物种分布建模学习手册|理论 + R 语言 + ArcGIS 全套实操教程
arcgis·环境变量·r 语言·maxent 模型·物种分布建模·生态学研究·科研教程
古少侠4 天前
deepseek转word工具怎么选?DS随心转与4种方案对比实测
人工智能·word·powerpoint
SunnyDays10114 天前
使用 Python 将 PowerPoint 转换为视频(无需安装 Microsoft PowerPoint)
python·powerpoint·ppt 转 动画·ppt 转 mp4·ppt 转 wmv·幻灯片转动画·幻灯片转 mp4
小羊没烦恼!5 天前
Memory 记忆设计讨论:Agent Memory 的安全边界:权限、删除、版本与回执
java·大数据·word·powerpoint·.net
h78813948 天前
录音容易纪要难?录音转文字 + AI 纪要实测,提升会议效率
人工智能·powerpoint
jiushidt8 天前
ArcGIS Pro Add‑in 打包流程详解
arcgis·c#·.net·arcgispro
蓝悦无人机8 天前
《地面站软件开发》-第2章ArcGIS Maps SDK for Qt 改变视角
arcgis·上位机·地面站·qml·qt6·qt quick·天地图