Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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;
}