Vorgehensweise: Abrufen der Anzahl der Folien in einem Präsentationsdokument
In diesem Thema wird erklärt, wie mit den Klassen im Open XML SDK 2.0 für Microsoft Office die Anzahl der Folien in einem Präsentationsdokument (ob ausgeblendet oder nicht) programmgesteuert abgerufen werden kann, ohne das Dokument in Microsoft PowerPoint zu laden. Diese Aufgabe wird mithilfe eines Beispiels der RetrieveNumberOfSlides-Methode veranschaulicht.
Letzte Änderung: Dienstag, 29. November 2011
Gilt für: Excel 2010 | Office 2010 | PowerPoint 2010 | Word 2010
Inhalt dieses Artikels
RetrieveNumberOfSlides-Methode
Aufrufen der RetrieveNumberOfSlides-Methode
Funktionsweise des Codes
Abrufen der Anzahl aller Folien
Abrufen der Anzahl sichtbarer Folien
Beispielcode
Zum Verwenden des Beispielcodes in diesem Thema müssen Sie das Open XML SDK 2.0 (in englischer Sprache) installieren. Sie müssen in Ihrem Projekt explizit auf die folgenden Assemblys verweisen:
WindowsBase
DocumentFormat.OpenXml (vom Open XML SDK installiert)
Zum Kompilieren des Codes in diesem Thema müssen Sie auch die folgenden using-Direktiven oder Imports-Anweisungen verwenden.
using System;
using System.Linq;
using DocumentFormat.OpenXml.Packaging;
Imports DocumentFormat.OpenXml.Packaging
RetrieveNumberOfSlides-Methode
Mit der RetrieveNumberOfSlides-Methode können Sie die Anzahl der Folien in einem Präsentationsdokument abrufen, optional auch einschließlich der ausgeblendeten Folien. Die RetrieveNumberOfSlides-Methode akzeptiert zwei Parameter: eine Zeichenfolge zum Angeben des Pfads der Datei, die Sie untersuchen möchten, und einen optionalen booleschen Wert, der angibt, ob die ausgeblendeten Folien in die Anzahl einbezogen werden.
public static int RetrieveNumberOfSlides(string fileName,
bool includeHidden = true)
Public Function RetrieveNumberOfSlides(ByVal fileName As String,
Optional ByVal includeHidden As Boolean = True) As Integer
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.
// Retrieve the number of slides, excluding the hidden slides.
Console.WriteLine(RetrieveNumberOfSlides(DEMOPATH, false));
// Retrieve the number of slides, including the hidden slides.
Console.WriteLine(RetrieveNumberOfSlides(DEMOPATH));
' Retrieve the number of slides, excluding the hidden slides.
Console.WriteLine(RetrieveNumberOfSlides(DEMOPATH, False))
' Retrieve the number of slides, including the hidden slides.
Console.WriteLine(RetrieveNumberOfSlides(DEMOPATH))
Funktionsweise des Codes
Der Code erstellt zunächst die ganzzahlige Variable slidesCount zum Speichern der Anzahl der Folien. Der Code öffnet anschließend die angegebene Präsentation mithilfe der PresentationDocument.Open-Methode und gibt an, dass das Dokument schreibgeschützt geöffnet werden soll (mit dem letzten Parameterwert false). Unter Verwendung der geöffneten Präsentation greift der Code auf die PresentationPart-Eigenschaft zum Navigieren zum Hauptpräsentationsteil zurück und speichert den Verweis in der Variablen presentationPart.
using (PresentationDocument doc =
PresentationDocument.Open(fileName, false))
{
// Get the presentation part of the document.
PresentationPart presentationPart = doc.PresentationPart;
// Code removed here…
}
Return slidesCount;
Using doc As PresentationDocument =
PresentationDocument.Open(fileName, False)
' Get the presentation part of the document.
Dim presentationPart As PresentationPart = doc.PresentationPart
' Code removed here…
End Using
Return slidesCount
Abrufen der Anzahl aller Folien
Wenn der Präsentationsteilverweis nicht NULL ist (was bei gültigen in PowerPoint geladenen Präsentationen nicht der Fall ist), ruft der Code anschließend 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)
{
slidesCount = presentationPart.SlideParts.Count();
}
else
{
// Code removed here…
}
If includeHidden Then
slidesCount = presentationPart.SlideParts.Count()
Else
' Code removed here…
End If
Abrufen der Anzahl sichtbarer Folien
Wenn Sie angefordert haben, dass der Code den Rückgabewert auf ausschließlich sichtbare Folien begrenzen soll, muss der Code seine Folienauflistung so filtern, dass nur die Folien mit einer Show-Eigenschaft mit einem Wert einbezogen werden, der true ist. Wenn die Show-Eigenschaft NULL ist, ist dies auch ein Hinweis, dass die Folie sichtbar ist. Dieses Szenario ist am wahrscheinlichsten. PowerPoint legt im Allgemeinen den Wert dieser Eigenschaft nicht fest, es sei denn, die Folie soll ausgeblendet werden. Die Show-Eigenschaft kann nur dann den Wert true aufweisen, wenn Sie die Folie aus- und wieder eingeblendet hätten. Der folgende Code verwendet die Where-Funktion mit einem Lambda-Ausdruck, um die Aufgabe auszuführen.
var slides = presentationPart.SlideParts.Where(
(s) => (s.Slide != null) &&
((s.Slide.Show == null) || (s.Slide.Show.HasValue &&
s.Slide.Show.Value)));
slidesCount = slides.Count();
Dim slides = presentationPart.SlideParts.
Where(Function(s) (s.Slide IsNot Nothing) AndAlso
((s.Slide.Show Is Nothing) OrElse
(s.Slide.Show.HasValue AndAlso
s.Slide.Show.Value)))
slidesCount = slides.Count()
Beispielcode
Es folgt das vollständige RetrieveNumberOfSlides-Codebeispiel in C# und Visual Basic.
public static int RetrieveNumberOfSlides(string fileName,
bool includeHidden = true)
{
int slidesCount = 0;
using (PresentationDocument doc =
PresentationDocument.Open(fileName, false))
{
// Get the presentation part of the document.
PresentationPart presentationPart = doc.PresentationPart;
if (presentationPart != null)
{
if (includeHidden)
{
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 != null) &&
((s.Slide.Show == null) || (s.Slide.Show.HasValue &&
s.Slide.Show.Value)));
slidesCount = slides.Count();
}
}
}
return slidesCount;
}
Public Function RetrieveNumberOfSlides(ByVal fileName As String,
Optional ByVal includeHidden As Boolean = True) As Integer
Dim slidesCount As Integer = 0
Using doc As PresentationDocument =
PresentationDocument.Open(fileName, False)
' Get the presentation part of the document.
Dim presentationPart As PresentationPart = doc.PresentationPart
If presentationPart IsNot Nothing Then
If includeHidden Then
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.
Dim slides = presentationPart.SlideParts.
Where(Function(s) (s.Slide IsNot Nothing) AndAlso
((s.Slide.Show Is Nothing) OrElse
(s.Slide.Show.HasValue AndAlso
s.Slide.Show.Value)))
slidesCount = slides.Count()
End If
End If
End Using
Return slidesCount
End Function
Siehe auch
Referenz
Sonstige Ressourcen
Retrieving the Number of Slides from PowerPoint 2010 Presentations by Using the Open XML SDK 2.0