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


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


    1、打开PPT文件

    1. // 打开PPT
    2. Microsoft.Office.Interop.PowerPoint.Application pptApp = new Microsoft.Office.Interop.PowerPoint.Application();
    3. Presentation ppt = pptApp.Presentations.Open(pptPath, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse);

    2、添加幻灯片

    1. // 要添加的幻灯片的页码
    2. int index = 4;
    3. //添加幻灯片
    4. Slide slide2 = ppt.Slides.Add(index, PpSlideLayout.ppLayoutBlank);

    3、获取指定的幻灯片

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

    4、获取所有要素Shape

    1. // 遍历所有幻灯片
    2. foreach (Slide slide in ppt.Slides)
    3. {
    4. // 遍历所有元素
    5. foreach (Shape shape in slide.Shapes)
    6. {
    7. // TODO
    8. }
    9. }

    5、获取所有文字

    1. // 获取文字
    2. List<string> stringList = new List<string>();
    3. // 遍历所有幻灯片
    4. foreach (Slide slide in ppt.Slides)
    5. {
    6. // 遍历所有元素
    7. foreach (Shape shape in slide.Shapes)
    8. {
    9. if (shape.HasTextFrame == MsoTriState.msoTrue && shape.TextFrame.HasText == MsoTriState.msoTrue)
    10. {
    11. // 获取文字
    12. stringList.Add(shape.TextFrame.TextRange.Text.ToString());
    13. }
    14. }
    15. }

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

    1. foreach (Shape shape in initSlide.Shapes)
    2. {
    3. if (shape.Type == MsoShapeType.msoPicture)
    4. {
    5. // 复制到剪贴板
    6. shape.Copy();
    7. // 获取图片数据
    8. Image img = (Image)System.Windows.Forms.Clipboard.GetData(System.Windows.Forms.DataFormats.Bitmap);
    9. // 保存图片
    10. img.Save(@"C:\Users\Administrator\Desktop\new.png");
    11. }
    12. }

    7、插入一个文本框

    1. //添加Shape
    2. float x = 100;
    3. float y = 100;
    4. float width = 500;
    5. float height = 300;
    6. string text = "这是一个新插入的文本!!!!!!!!!";
    7. Shape shape = slide.Shapes.AddShape(MsoAutoShapeType.msoShapeRectangle, x, y, width, height);
    8. //保存
    9. ppt.Save();

    8、Shape属性设置

    1. //控制填充色为透明
    2. shape.Fill.Transparency = 1;
    3. //控制边框颜色为黑色
    4. shape.Line.ForeColor.RGB = System.Drawing.ColorTranslator.ToWin32(System.Drawing.Color.FromArgb(0, 0, 0));
    5. //文字加粗
    6. shape.TextFrame.TextRange.Font.Bold = MsoTriState.msoTrue;
    7. //字体为黑色
    8. shape.TextFrame.TextRange.Font.Color.RGB = System.Drawing.ColorTranslator.ToWin32(System.Drawing.Color.FromArgb(0, 0, 0));
    9. //字体
    10. shape.TextFrame.TextRange.Font.NameFarEast = "微软雅黑";
    11. //水平对齐
    12. shape.TextFrame.TextRange.ParagraphFormat.Alignment = Microsoft.Office.Interop.PowerPoint.PpParagraphAlignment.ppAlignLeft;
    13. //插入的文本
    14. shape.TextFrame.TextRange.Text = text;
    15. //字体大小
    16. shape.TextFrame.TextRange.Font.Size=40;
    17. //字体居中
    18. shape.TextFrame.TextRange.ParagraphFormat.Alignment = PpParagraphAligrument.ppAlignCenter;
    19. //文本框内容垂直居中
    20. shape.TextFrame.VerticalAnchor = MsoVerticalAnchor.msoAnchorMiddle;

    9、插入一个图片

    1. // 获取当前工程中的所有Layouts
    2. IEnumerable layouts = Project.Current.GetItems();
    3. // 按名称获取
    4. LayoutProjectItem layoutItem = Project.Current.GetItems().FirstOrDefault(item => item.Name.Equals("MyLayout"));

    10、保存、另存为

    1. // 获取当前工程中的所有Layouts
    2. IEnumerable layouts = Project.Current.GetItems();
    3. // 按名称获取
    4. LayoutProjectItem layoutItem = Project.Current.GetItems().FirstOrDefault(item => item.Name.Equals("MyLayout"));
  • 相关阅读:
    【bug】vxe-table编辑列表中使用vue-treeselect,防止卡顿,默认插槽用div导致单击树下拉框不展现,完美解决
    Python爬虫——BS4解析方式简介
    5G与卫星网络融合演进研究
    8.1 C++ 标准输入输出流
    使用Multipass编译OpenHarmony工程
    Vue3兼容低版本浏览器(ie11,chrome63)
    BMS 信息资源e分享平台
    Docker容器自启动
    第一章:IDEA使用介绍
    专题二:二叉树的深搜【递归、搜索、回溯】
  • 原文地址:https://blog.csdn.net/xcc34452366/article/details/133909523