Freigeben über


Abrufen der Anzahl der Folien in einem Präsentationsdokument

In diesem Thema wird gezeigt, wie Sie die Klassen im Open XML SDK für Office verwenden, um die Anzahl der Folien in einem Präsentationsdokument programmgesteuert abzurufen, entweder ausgeblendete Folien oder nicht, ohne das Dokument in Microsoft PowerPoint zu laden. Sie enthält eine Beispielmethode RetrieveNumberOfSlides zur Veranschaulichung dieser Aufgabe.


RetrieveNumberOfSlides-Methode

Sie können die RetrieveNumberOfSlides -Methode verwenden, um die Anzahl der Folien in einem Präsentationsdokument abzurufen, optional einschließlich der ausgeblendeten Folien. Die RetrieveNumberOfSlides Methode akzeptiert zwei Parameter: eine Zeichenfolge, die den Pfad der Datei angibt, die Sie untersuchen möchten, und einen optionalen booleschen Wert, der angibt, ob ausgeblendete Folien in die Anzahl eingeschlossen werden sollen.

static int RetrieveNumberOfSlides(string fileName, string includeHidden = "true")

Aufrufen der RetrieveNumberOfSlides-Methode

Die Methode gibt eine ganze Zahl zurück, die die Anzahl der Folien angibt, und zwar je nach Einstellung des zweiten Parameterwerts mit oder ohne ausgeblendete Folien. Übergeben Sie zum Aufrufen der Methode alle Parameterwerte entsprechend dem folgenden Code.

if (args is [{ } fileName, { } includeHidden])
{
    RetrieveNumberOfSlides(fileName, includeHidden);
}
else if (args is [{ } fileName2])
{
    RetrieveNumberOfSlides(fileName2);
}

Funktionsweise des Codes

Der Code erstellt zunächst eine ganzzahlige Variable ( slidesCount), die die Anzahl der Folien enthält. Der Code öffnet dann die angegebene Präsentation mithilfe der Open -Methode und gibt an, dass das Dokument für den schreibgeschützten Zugriff geöffnet sein soll (der endgültige false Parameterwert). Angesichts der geöffneten Präsentation verwendet der Code die PresentationPart -Eigenschaft, um zum Standard Präsentationsteils zu navigieren und den Verweis in einer Variablen namens presentationPartzu speichern.

using (PresentationDocument doc = PresentationDocument.Open(fileName, false))
{
    if (doc.PresentationPart is not null)
    {
        // Get the presentation part of the document.
        PresentationPart presentationPart = doc.PresentationPart;

Abrufen der Anzahl aller Folien

Wenn der Präsentationsteilverweis nicht NULL ist (und dies bei einer gültigen Präsentation, die ordnungsgemäß in PowerPoint geladen wird), ruft der Code als Nächstes die Count -Methode für den Wert der SlideParts -Eigenschaft des Präsentationsteils auf. Wenn Sie alle Folien angefordert haben, einschließlich der ausgeblendeten Folien, ist die Aufgabe erledigt. Etwas mehr Codieraufwand ist erforderlich, wenn Sie die ausgeblendeten Folien ausschließen möchten (siehe den folgenden Code).

if (includeHidden.ToUpper() == "TRUE")
{
    slidesCount = presentationPart.SlideParts.Count();
}
else
{

Abrufen der Anzahl der sichtbaren Folien

Wenn Sie angefordert haben, dass der Rückgabewert auf nur sichtbare Folien beschränkt werden soll, muss der Code seine Auflistung von Folien so filtern, dass nur die Folien eingeschlossen werden, die über eine Show Eigenschaft verfügen, die einen Wert enthält, und der Wert ist true. Wenn die Show -Eigenschaft NULL ist, gibt dies auch an, dass die Folie sichtbar ist. Dies ist die häufigste Ursache. PowerPoint legt den Wert dieser Eigenschaft im Allgemeinen nicht fest, es sei denn, die Folie soll ausgeblendet werden. Die einzige Möglichkeit, wie die Show Eigenschaft vorhanden wäre und den Wert hat, true wäre, wenn Sie die Folie ausgeblendet und dann aus der Folie entfernt hätten. Der folgende Code verwendet die Where Funktion mit einem Lambdaausdruck, um die Arbeit zu erledigen.

// Each slide can include a Show property, which if hidden 
// will contain the value "0". The Show property may not 
// exist, and most likely will not, for non-hidden slides.
var slides = presentationPart.SlideParts.Where(
    (s) => (s.Slide is not null) &&
      ((s.Slide.Show is null) || (s.Slide.Show.HasValue && s.Slide.Show.Value)));

slidesCount = slides.Count();

Beispielcode

Im Folgenden finden Sie das vollständige RetrieveNumberOfSlides Codebeispiel in C# und Visual Basic.

if (args is [{ } fileName, { } includeHidden])
{
    RetrieveNumberOfSlides(fileName, includeHidden);
}
else if (args is [{ } fileName2])
{
    RetrieveNumberOfSlides(fileName2);
}

static int RetrieveNumberOfSlides(string fileName, string includeHidden = "true")
{
    int slidesCount = 0;
    using (PresentationDocument doc = PresentationDocument.Open(fileName, false))
    {
        if (doc.PresentationPart is not null)
        {
            // Get the presentation part of the document.
            PresentationPart presentationPart = doc.PresentationPart;

            if (presentationPart is not null)
            {
                if (includeHidden.ToUpper() == "TRUE")
                {
                    slidesCount = presentationPart.SlideParts.Count();
                }
                else
                {
                    // Each slide can include a Show property, which if hidden 
                    // will contain the value "0". The Show property may not 
                    // exist, and most likely will not, for non-hidden slides.
                    var slides = presentationPart.SlideParts.Where(
                        (s) => (s.Slide is not null) &&
                          ((s.Slide.Show is null) || (s.Slide.Show.HasValue && s.Slide.Show.Value)));

                    slidesCount = slides.Count();
                }
            }
        }
    }

    Console.WriteLine($"Slide Count: {slidesCount}");

    return slidesCount;
}

Siehe auch