zoukankan      html  css  js  c++  java
  • C# 合并、拆分PPT幻灯片

    概述

    通过合并、拆分的功能,将不同的文档中的幻灯片进行组合形成新的的文档,同时也可以将一个多页的PPT文档按页拆分成多个不同的文档。此功能也丰富了编程人员对PPT幻灯片的操作的选择。下面将分别从以下几个要点来分别阐述通过C#来合并、拆分PPT幻灯片的方法。

    示例要点

    1. 合并PPT幻灯片(2种方式)

     方式1加载多个独立的PowerPoint文件,同时将两个文档的数据合并后为一个新的PPT文件

     方式2将第1个幻灯片中指定的幻灯片数据,写入到第2个幻灯片,并保存为新的PPT文件

    2. 拆分PPT幻灯片

      2.1 按每一页拆分

      2.2 按指定拆分页数

    工具

    :下载安装该控件后,注意在程序中添加引用Sprie.Presentation.dll(如下图)。dll可在安装路径下的Bin文件夹中获取。

    代码示例(供参考)

    【示例1】合并PPT幻灯片(方式1)

    步骤1 :新建文档

    //创建新的Presentation示例并删除默认的空白幻灯片
    Presentation ppt = new Presentation();
    ppt.Slides.RemoveAt(0);

    步骤2:加载2个需要合并的PPT幻灯片

    Presentation ppt1 = new Presentation("test1.pptx",FileFormat.Pptx2010);
    Presentation ppt2 = new Presentation("test2.pptx",FileFormat.Pptx2010);

    步骤3:插入PPT数据到文档

    //插入ppt1的数据到ppt
    for (int i = 0; i < ppt1.Slides.Count; i++)
    {
        ppt.Slides.Append(ppt1.Slides[i]);
    }
    
    //插入ppt2中的第1张幻灯片数据到ppt
    ppt.Slides.Append(ppt2.Slides[0]);

    步骤4:保存文档

    ppt.SaveToFile("result.pptx", FileFormat.Pptx2010);

    完成代码后,调试程序,生成文档。PPT文档合并效果如下:

    合并前:

    合并后:

    全部代码:

    using Spire.Presentation;
    
    namespace MergeSlides_PPT
    {
        class Program
        {
            static void Main(string[] args)
            {
                //创建新的Presentation示例并删除默认的空白幻灯片
                Presentation ppt = new Presentation();
                ppt.Slides.RemoveAt(0);
    
                //加载需要合并的两个幻灯片文档
                Presentation ppt1 = new Presentation("test1.pptx", FileFormat.Pptx2010);
                Presentation ppt2 = new Presentation("test2.pptx", FileFormat.Pptx2010);
    
                //插入ppt1的数据
                for (int i = 0; i < ppt1.Slides.Count; i++)
                {
                    ppt.Slides.Append(ppt1.Slides[i]);
                }
    
                //插入ppt2中的第一张幻灯片数据
                ppt.Slides.Append(ppt2.Slides[0]);
    
                //保存ppt文档
                ppt.SaveToFile("result.pptx", FileFormat.Pptx2010);
                System.Diagnostics.Process.Start("result.pptx");
            }
        }
    }
    View Code

    【示例2】合并PPT幻灯片(方式2)

    步骤1:加载幻灯片

    //实例化Presentation类的对象,并加载幻灯片文档
    Presentation ppt1 = new Presentation("test1.pptx", FileFormat.Pptx2010);
    //获取第一张幻灯片
    ISlide slide = ppt1.Slides[0];
    
    //加载第二个PowerPoint示例文档
    Presentation ppt2 = new Presentation();
    ppt2.LoadFromFile("test2.pptx", FileFormat.Pptx2010);

    步骤2:合并数据

    //将ppt1中获取的第一个幻灯片数据插入到ppt2,并设置为第一页
    int index = 0;
    ppt2.Slides.Insert(index, slide);

    步骤3:保存文档

    ppt2.SaveToFile("Merge2.pptx", FileFormat.Pptx2010);

    合并前:

    合并后:

    全部代码:

    using Spire.Presentation;
    
    namespace MergeSlides2_PPT
    {
        class Program
        {
            static void Main(string[] args)
            {
                //实例化Presentation类的对象,并加载幻灯片文档
                Presentation ppt1 = new Presentation("test1.pptx", FileFormat.Pptx2010);
                //获取第一张幻灯片
                ISlide slide = ppt1.Slides[0];
    
                //加载第二个PowerPoint示例文档
                Presentation ppt2 = new Presentation();
                ppt2.LoadFromFile("test2.pptx", FileFormat.Pptx2010);
    
                //将ppt1中获取的第一个幻灯片数据插入到ppt2,并设置为第一页
                int index = 0;
                ppt2.Slides.Insert(index, slide);
    
                //保存文档2
                ppt2.SaveToFile("Merge2.pptx", FileFormat.Pptx2010);
                System.Diagnostics.Process.Start("Merge2.pptx");
            }
        }
    }
    View Code

    【示例3】按PPT幻灯片每一页拆分

    步骤1: 加载测试文档

    //实例化Presentation类的对象,并加载测试文档
    Presentation ppt = new Presentation();
    ppt.LoadFromFile("test.pptx");

    步骤2:拆分ppt文档

    //遍历文档中的所有幻灯片
    for (int i = 0; i < ppt.Slides.Count; i++)
    {      
        Presentation newppt = new Presentation();//创建一个新的PPT文档
        newppt.Slides.RemoveAt(0);//删除新建文档中默认的第一张幻灯片
        newppt.Slides.Append(ppt.Slides[i]);//将ppt中的幻灯片按每一页添加到newppt中
        newppt.SaveToFile(String.Format("拆分{0}.pptx", i), FileFormat.Pptx2010);//保存newppt文档
    }

    拆分前:

    拆分后:

    全部代码:

    using Spire.Presentation;
    using System;
    
    namespace SplitSlides_PPT
    {
        class Program
        {
            static void Main(string[] args)
            {
                //实例化Presentation类的对象,并加载测试文档
                Presentation ppt = new Presentation();
                ppt.LoadFromFile("test.pptx");
    
                //遍历文档中的所有幻灯片
                for (int i = 0; i < ppt.Slides.Count; i++)
                {      
                    Presentation newppt = new Presentation();//创建一个新的PPT文档
                    newppt.Slides.RemoveAt(0);//删除新建文档中默认的第一张幻灯片
                    newppt.Slides.Append(ppt.Slides[i]);//将ppt中的幻灯片按每一页添加到newppt中
                    newppt.SaveToFile(String.Format("拆分{0}.pptx", i), FileFormat.Pptx2010);//保存newppt文档
                }
            }
        }
    }
    View Code

    【示例4】按PPT指定页数来拆分

    步骤1:加载文档

     //创建文档ppt加载需要拆分的文档
     Presentation ppt = new Presentation();
     ppt.LoadFromFile("test.pptx");

    步骤2:将文档的1-2页拆分,保存为文档1

    Presentation ppt1 = new Presentation();
    ppt1.Slides.RemoveAt(0);            
    for (int i = 0; i < 2; i++)
    {
        ppt1.Slides.Append(ppt.Slides[i]);
    }           
    ppt1.SaveToFile(String.Format("Split1.pptx"), FileFormat.Pptx2010);

    步骤3:将文档的3-4页拆分,保存为文档2

    Presentation ppt2 = new Presentation();
    ppt2.Slides.RemoveAt(0);            
    for (int i = 2; i < 4; i++)
    {
        ppt2.Slides.Append(ppt.Slides[i]);
    }
    ppt2.SaveToFile(String.Format("Split2.pptx"), FileFormat.Pptx2010);

    步骤 4:将文档第5页拆分,保存为文档3

    Presentation ppt3 = new Presentation();
    ppt3.Slides.RemoveAt(0);            
    ppt3.Slides.Append(ppt.Slides[4]);
    ppt3.SaveToFile(String.Format("Split3.pptx"), FileFormat.Pptx2010);

    拆分前:

    拆分后:

     

    全部代码:

    using Spire.Presentation;
    using System;
    
    namespace SplitSlides2_PPT
    {
        class Program
        {
            static void Main(string[] args)
            {
                //创建文档ppt加载需要拆分的文档
                Presentation ppt = new Presentation();
                ppt.LoadFromFile("test.pptx");
    
                //将文档的1-2页拆分,保存为文档1
                Presentation ppt1 = new Presentation();
                ppt1.Slides.RemoveAt(0);            
                for (int i = 0; i < 2; i++)
                {
                    ppt1.Slides.Append(ppt.Slides[i]);
                }           
                ppt1.SaveToFile(String.Format("Split1.pptx"), FileFormat.Pptx2010);
    
                //将文档的3-4页拆分,保存为文档2
                Presentation ppt2 = new Presentation();
                ppt2.Slides.RemoveAt(0);            
                for (int i = 2; i < 4; i++)
                {
                    ppt2.Slides.Append(ppt.Slides[i]);
                }
                ppt2.SaveToFile(String.Format("Split2.pptx"), FileFormat.Pptx2010);
    
    
                //将文档第5页拆分,保存为文档3
                Presentation ppt3 = new Presentation();
                ppt3.Slides.RemoveAt(0);            
                ppt3.Slides.Append(ppt.Slides[4]);
                ppt3.SaveToFile(String.Format("Split3.pptx"), FileFormat.Pptx2010);
            }
        }
    }
    View Code

    以上是C# 合并、拆分PPT幻灯片的全部内容。

    (本文完)

    转载请注明出处。

  • 相关阅读:
    EF Core 原理从源码出发(一)
    EF Core 原理从源码出发(二)
    AutoMapper的源码分析
    Latex 引用为名字+序号
    Latex引用文献按照引用顺序排序
    HttpRunner3.X
    Python Selenium — 封装浏览器引擎类
    Online PCA for Contaminated Data
    LEARNING WITH AMIGO: ADVERSARIALLY MOTIVATED INTRINSIC GOALS
    LEARNING INVARIANT REPRESENTATIONS FOR REINFORCEMENT LEARNING WITHOUT RECONSTRUCTION
  • 原文地址:https://www.cnblogs.com/Yesi/p/9916190.html
Copyright © 2011-2022 走看看