C# 使用Open XML SDK从演示文稿中删除除2张幻灯片以外的所有幻灯片

C# 使用Open XML SDK从演示文稿中删除除2张幻灯片以外的所有幻灯片,c#,ms-office,powerpoint,openxml,openxml-sdk,C#,Ms Office,Powerpoint,Openxml,Openxml Sdk,对不起,我的英语:) 我有一些介绍 using (PresentationDocument presentationDocument = PresentationDocument.Open(@"sample.pptx", false)) { } 包含10张幻灯片。如何删除除第二张幻灯片以外的所有幻灯片,并将此结果(演示文稿)保存在单独的.pptx文件中 我研究了示例,但这里展示了如何删除一张幻灯片,但我无法解决我的任务。使用您提供的示例中的方法,您可以删除第一页,然后删除新的第一页之后的任何

对不起,我的英语:)

我有一些介绍

using (PresentationDocument presentationDocument = PresentationDocument.Open(@"sample.pptx", false))
{

}
包含10张幻灯片。如何删除除第二张幻灯片以外的所有幻灯片,并将此结果(演示文稿)保存在单独的.pptx文件中


我研究了示例,但这里展示了如何删除一张幻灯片,但我无法解决我的任务。

使用您提供的示例中的方法,您可以删除第一页,然后删除新的第一页之后的任何页面。代码:

private void KeepOnlySecondPage(string presentationFilePath, string onlySecondPageFilePath)
{
   using (PresentationDocument presentationDocument = PresentationDocument.Open(presentationFilePath, false))
   {
      if (CountSlides(presentationDocument) > 0)
      {
         DeleteSlide(presentationDoucment, 0);
         while (CountSlides(presentationDocument) > 1)
         {
            DeleteSlide(presentationDocument,1);
         }
         presentationDocument.Save(onlySecondPageFilePath);
      }
    }
}
如果您花更多的时间研究链接到的页面中的示例以及PresentationDocument类本身,也许更简单的方法是创建一个新的PresentationDocument,其中只包含原始文档的第二页


此外,请编辑您的问题,以包含链接页面中的重要部分。链接死了

亚当:你可以试试这个

 // Delete all slides except Slide at Index i


                    int countSlide = CountSlides(filePath + i + ".pptx");  // Count number of slides
                    int newIndex = i; // Slide index that you want to keep it
                    while (1 < countSlide )
                    {
                        // Delete all slides before index i
                        if (newIndex > 0)
                        {
                            DeleteSlide(filePath + i + ".pptx", 0);
                            countSlide--; // Decrease number of slides after you delete it
                            newIndex--;
                        }
                        // Delete all slides after index i
                        else if (newIndex < 0)
                        {
                            DeleteSlide(filePath + i + ".pptx", 1);
                            countSlide--; // Decrease number of slides after you delete it
                            newIndex--;
                        }
                        else newIndex--;

                    }
//删除除索引i处的幻灯片以外的所有幻灯片
int countSlide=CountSlides(文件路径+i+“.pptx”);//计算幻灯片的数量
int newIndex=i;//要保留它的幻灯片索引
而(10)
{
删除幻灯片(文件路径+i+“.pptx”,0);
countSlide--;//删除后减少幻灯片数量
新索引--;
}
//删除索引i之后的所有幻灯片
else if(newIndex<0)
{
删除幻灯片(文件路径+i+“.pptx”,1);
countSlide--;//删除后减少幻灯片数量
新索引--;
}
否则,新索引--;
}

DeleteSlide()您可以在这里找到

您的代码正在工作,但也更改了源(
presentationFilePath
)演示文稿。@adamshakhabov我怀疑可能会发生这种情况。如果您不想从头开始创建,一个简单的解决方法是使用File.Copy(原始路径、原始路径)并打开副本。我不熟悉PresentationDocument类,否则我会选择CreateFromScratch方法:)