Partager via


Récupérer le nombre de diapositives dans un document de présentation

Cette rubrique montre comment utiliser les classes du Kit de développement logiciel (SDK) Open XML pour Office afin de récupérer par programmation le nombre de diapositives d’un document de présentation, y compris les diapositives masquées ou non, sans charger le document dans Microsoft PowerPoint. Il contient un exemple RetrieveNumberOfSlides de méthode pour illustrer cette tâche.


Méthode RetrieveNumberOfSlides

Vous pouvez utiliser la RetrieveNumberOfSlides méthode pour obtenir le nombre de diapositives dans un document de présentation, y compris éventuellement les diapositives masquées. La RetrieveNumberOfSlides méthode accepte deux paramètres : une chaîne qui indique le chemin du fichier à examiner et une valeur booléenne facultative qui indique s’il faut inclure des diapositives masquées dans le nombre.

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

Appel de la méthode RetrieveNumberOfSlides

La méthode renvoie un nombre entier qui indique le nombre de diapositives, comptant toutes les diapositives ou uniquement les diapositives visibles, selon la valeur du deuxième paramètre. Pour appeler la méthode, passez toutes les valeurs de paramètres, comme dans le code suivant.

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

Fonctionnement du code

Le code commence par créer une variable entière, slidesCount, pour contenir le nombre de diapositives. Le code ouvre ensuite la présentation spécifiée à l’aide de la Open méthode et en indiquant que le document doit être ouvert pour l’accès en lecture seule (valeur du paramètre final false ). Étant donné la présentation ouverte, le code utilise la PresentationPart propriété pour accéder à la partie de présentation main, en stockant la référence dans une variable nommée presentationPart.

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

Récupération du nombre de toutes les diapositives

Si la référence du composant de présentation n’est pas null (et qu’elle ne le sera pas pour toute présentation valide qui se charge correctement dans PowerPoint), le code appelle ensuite la Count méthode sur la valeur de la SlideParts propriété du composant de présentation. Si vous avez demandé toutes les diapositives, diapositives masquées incluses, c'est tout ce qu'il y a à faire. Il y a encore un peu de travail à faire si vous souhaitez exclure les diapositives masquées, comme l'illustre le code suivant.

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

Récupération du nombre de diapositives visibles

Si vous avez demandé que le code limite la valeur de retour pour inclure uniquement les diapositives visibles, le code doit filtrer sa collection de diapositives pour inclure uniquement les diapositives qui ont une Show propriété qui contient une valeur, et la valeur est true. Si la Show propriété est null, cela indique également que la diapositive est visible. C’est le scénario le plus probable. En général, PowerPoint ne définit pas la valeur de cette propriété, sauf si la diapositive doit être masquée. La seule façon dont la Show propriété existerait et aurait une valeur de true serait si vous aviez masqué, puis décompressé la diapositive. Le code suivant utilise la Where fonction avec une expression lambda pour effectuer le travail.

// 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();

Exemple de code

Voici l’exemple de code complet RetrieveNumberOfSlides en C# et 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;
}

Voir aussi