Eine Folie an eine neue Position verschieben

OpenXML SDK


 string FilePath = @"..\..\..\..\Sample Files\";

string FileName = FilePath + "Eine Folie an eine neue Position verschieben.pptx";

MoveSlide(FileName, 1, 2);

// Zählen der Folien in der Präsentation.

public static int CountSlides(string presentationFile)

{

    // Öffne die Präsentation schreibgeschützt.

    using (PresentationDocument presentationDocument = PresentationDocument.Open(presentationFile, false))

    {

        // Übergibt die Präsentation an die nächste CountSlides-Methode

        // und gibt die Folienanzahl zurück.

        return CountSlides(presentationDocument);

    }

}

// Zähle die Folien in der Präsentation.

public static int CountSlides(PresentationDocument presentationDocument)

{

    // Überprüfe auf ein Null-Dokumentobjekt.

    if (presentationDocument == null)

    {

        throw new ArgumentNullException("presentationDocument");

    }

    int slidesCount = 0;

    // Hole den Präsentationsteil des Dokuments.

    PresentationPart presentationPart = presentationDocument.PresentationPart;

    // Hole die Folienanzahl aus den SlideParts.

    if (presentationPart != null)

    {

        slidesCount = presentationPart.SlideParts.Count();

    }

    // Gib die Folienanzahl an die vorherige Methode zurück.

    return slidesCount;

}

// Verschiebe eine Folie an eine andere Position in der Folienreihenfolge in der Präsentation.

public static void MoveSlide(string presentationFile, int from, int to)

{

    using (PresentationDocument presentationDocument = PresentationDocument.Open(presentationFile, true))

    {

        MoveSlide(presentationDocument, from, to);

    }

}

// Verschiebe eine Folie an eine andere Position in der Folienreihenfolge in der Präsentation.

public static void MoveSlide(PresentationDocument presentationDocument, int from, int to)

{

    if (presentationDocument == null)

    {

        throw new ArgumentNullException("presentationDocument");

    }

    // Rufe die CountSlides-Methode auf, um die Anzahl der Folien in der Präsentation zu erhalten.

    int slidesCount = CountSlides(presentationDocument);

    // Überprüfe, ob die Positionen von und zu im gültigen Bereich und unterschiedlich sind.

    if (from < 0 || from >= slidesCount)

    {

        throw new ArgumentOutOfRangeException("from");

    }

    if (to < 0 || from >= slidesCount || to == from)

    {

        throw new ArgumentOutOfRangeException("to");

    }

    // Hole den Präsentationsteil aus dem Präsentationsdokument.

    PresentationPart presentationPart = presentationDocument.PresentationPart;

    // Die Folienanzahl ist nicht null, also muss die Präsentation Folien enthalten.            

    Presentation presentation = presentationPart.Presentation;

    SlideIdList slideIdList = presentation.SlideIdList;

    // Hole die Folien-ID der Quellfolie.

    SlideId sourceSlide = slideIdList.ChildElements[from] as SlideId;

    SlideId targetSlide = null;

    // Bestimme die Position der Zielfolie, nach der die Quellfolie verschoben werden soll.

    if (to == 0)

    {

        targetSlide = null;

    }

    if (from < to)

    {

        targetSlide = slideIdList.ChildElements[to] as SlideId;

    }

    else

    {

        targetSlide = slideIdList.ChildElements[to - 1] as SlideId;

    }

    // Entferne die Quellfolie aus ihrer aktuellen Position.

    sourceSlide.Remove();

    // Füge die Quellfolie an ihrer neuen Position nach der Zielfolie ein.

    slideIdList.InsertAfter(sourceSlide, targetSlide);

    // Speichere die modifizierte Präsentation.

    presentation.Save();

} 

Aspose.Slides


 string FilePath = @"..\..\..\..\Sample Files\";

string FileName = FilePath + "Eine Folie an eine neue Position verschieben.pptx";

MoveSlide(FileName, 1, 2);

// Verschiebe eine Folie an eine andere Position in der Folienreihenfolge in der Präsentation.

public static void MoveSlide(string presentationFile, int from, int to)

{

    //Instanziiere die PresentationEx-Klasse, um die Quell-PPTX-Datei zu laden

    using (Presentation pres = new Presentation(presentationFile))

    {

        //Hole die Folie, deren Position geändert werden soll

        ISlide sld = pres.Slides[from];

        ISlide sld2 = pres.Slides[to];

        //Setze die neue Position für die Folie

        sld2.SlideNumber = from;

        sld.SlideNumber = to;

        //Schreibe die PPTX auf die Festplatte

        pres.Save(presentationFile,Aspose.Slides.Export.SaveFormat.Pptx);

    }

}

Download Beispielcode