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方法:)