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

Removing all slides from presentation except 2 slide using Open XML SDK

对不起我的英语:)

我有一些介绍

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

}

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

我探索了 this 示例,但这里显示了如何删除一张幻灯片,我无法通过它解决我的任务。

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

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 class 本身,也许更简单的方法是创建一个仅包含原始页面第二页的新 PresentationDocument。

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

@Adam:你可以试试这个

 // 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--;

                    }

DeleteSlide() 你可以在这里找到 MSDN: OpenXML Delete a slide in presentation