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 supprimer par programmation tous les en-têtes et pieds de page d’un document de traitement de texte. Il contient un exemple RemoveHeadersAndFooters
de méthode pour illustrer cette tâche.
Méthode RemoveHeadersAndFooters
Vous pouvez utiliser la RemoveHeadersAndFooters
méthode pour supprimer toutes les informations d’en-tête et de pied de page d’un document de traitement de texte. N'oubliez pas, vous ne devez pas uniquement supprimer les parties d'en-tête et de pied de page du stockage de documents, mais vous devez également supprimer les références à ces parties du document. L'exemple de code montre les deux étapes de l'opération. La RemoveHeadersAndFooters
méthode accepte un seul paramètre, une chaîne qui indique le chemin du fichier que vous souhaitez modifier.
static void RemoveHeadersAndFooters(string filename)
La liste de code complète pour la méthode se trouve dans la section Exemple de code.
Appel de la méthode de l’exemple
Pour appeler la méthode de l'exemple, transmettez une chaîne pour le premier paramètre qui contient le nom de fichier du document que vous voulez modifier comme indiqué dans l'exemple de code suivant.
string filename = args[0];
RemoveHeadersAndFooters(filename);
Fonctionnement du code
La RemoveHeadersAndFooters
méthode fonctionne avec le document que vous spécifiez, en supprimant toutes les parties d’en-tête et de pied de page et les références à ces parties. Le code commence par ouvrir le document, en utilisant la Open méthode et en indiquant que le document doit être ouvert pour l’accès en lecture/écriture (paramètre true final). Étant donné le document ouvert, le code utilise la MainDocumentPart propriété pour accéder au document main, en stockant la référence dans une variable nommée docPart
.
// Given a document name, remove all of the headers and footers
// from the document.
using (WordprocessingDocument doc = WordprocessingDocument.Open(filename, true))
{
if (doc.MainDocumentPart is null)
{
throw new ArgumentNullException("MainDocumentPart is null.");
}
// Get a reference to the main document part.
var docPart = doc.MainDocumentPart;
Vérification de l’existence de l’en-tête/du pied de page
En fonction d’une référence au composant de document, le code détermine ensuite s’il a du travail à effectuer, c’est-à-dire si le document contient des en-têtes ou des pieds de page. Pour décider, le code appelle la Count
méthode des HeaderParts propriétés et FooterParts du composant de document, et si l’une ou l’autre retourne une valeur supérieure à 0, le code continue.
N’oubliez pas que les HeaderParts
propriétés et FooterParts
retournent chacune un IEnumerable<T> d’objets HeaderPart ou FooterPart , respectivement.
// Count the header and footer parts and continue if there
// are any.
if (docPart.HeaderParts.Count() > 0 || docPart.FooterParts.Count() > 0)
{
Suppression des parties d’en-tête et de pied de page
Avec une collection de références à des parties d’en-tête et de pied de page, vous pouvez écrire du code pour supprimer chacune d’elles individuellement, mais cela n’est pas nécessaire en raison du Kit de développement logiciel (SDK) Open XML. Au lieu de cela, vous pouvez appeler la DeleteParts méthode, en passant la collection de parties à supprimer. Cette méthode simple fournit un raccourci pour supprimer une collection de composants. Ainsi, les lignes de code suivantes remplacent la boucle de code que vous auriez dû écrire vous-même.
// Remove the header and footer parts.
docPart.DeleteParts(docPart.HeaderParts);
docPart.DeleteParts(docPart.FooterParts);
Suppression des références à l’en-tête et au pied de page
À ce stade, le code a supprimé les parties d'en-tête et de pied de page, mais le document contient encore des références orphelines à ces parties. Pour pouvoir supprimer les références orphelines, le code doit récupérer une référence au contenu du document (c'est-à-dire, au contenu XML présent dans la partie du document principal).
Pour supprimer les références bloquées, le code récupère d’abord une collection d’éléments HeaderReference, convertit la collection en , puis effectue une List
boucle dans la collection, en appelant la Remove() méthode pour chaque élément trouvé. Notez que le code convertit le IEnumerable
retourné par la Descendants() méthode en un List
afin qu’il puisse supprimer des éléments de la liste, et que le HeaderReference type fourni par le Kit de développement logiciel (SDK) Open XML facilite la référence aux éléments de type HeaderReference
dans le contenu XML. (Sans cette aide supplémentaire, vous auriez dû travailler directement avec les détails du contenu XML.) Une fois tous les en-têtes supprimés, le code répète l’opération pour les éléments de pied de page.
// Get a reference to the root element of the main
// document part.
Document document = docPart.Document;
// Remove all references to the headers and footers.
// First, create a list of all descendants of type
// HeaderReference. Then, navigate the list and call
// Remove on each item to delete the reference.
var headers = document.Descendants<HeaderReference>().ToList();
foreach (var header in headers)
{
header.Remove();
}
// First, create a list of all descendants of type
// FooterReference. Then, navigate the list and call
// Remove on each item to delete the reference.
var footers = document.Descendants<FooterReference>().ToList();
foreach (var footer in footers)
{
footer.Remove();
}
Exemple de code
Voici l’exemple de code complet RemoveHeadersAndFooters
en C# et Visual Basic.
// Remove all of the headers and footers from a document.
static void RemoveHeadersAndFooters(string filename)
{
// Given a document name, remove all of the headers and footers
// from the document.
using (WordprocessingDocument doc = WordprocessingDocument.Open(filename, true))
{
if (doc.MainDocumentPart is null)
{
throw new ArgumentNullException("MainDocumentPart is null.");
}
// Get a reference to the main document part.
var docPart = doc.MainDocumentPart;
// Count the header and footer parts and continue if there
// are any.
if (docPart.HeaderParts.Count() > 0 || docPart.FooterParts.Count() > 0)
{
// Remove the header and footer parts.
docPart.DeleteParts(docPart.HeaderParts);
docPart.DeleteParts(docPart.FooterParts);
// Get a reference to the root element of the main
// document part.
Document document = docPart.Document;
// Remove all references to the headers and footers.
// First, create a list of all descendants of type
// HeaderReference. Then, navigate the list and call
// Remove on each item to delete the reference.
var headers = document.Descendants<HeaderReference>().ToList();
foreach (var header in headers)
{
header.Remove();
}
// First, create a list of all descendants of type
// FooterReference. Then, navigate the list and call
// Remove on each item to delete the reference.
var footers = document.Descendants<FooterReference>().ToList();
foreach (var footer in footers)
{
footer.Remove();
}
}
}
}