使用 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
对不起我的英语:)
我有一些介绍
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