Partager via


Supprimer un composant de document d’un package

Cette rubrique montre comment utiliser les classes du Kit de développement logiciel (SDK) Open XML pour Office afin de supprimer un composant de document (fichier) d’un document Wordprocessing par programmation.


Packages et parties de documents

Un document Open XML est stocké en tant que package, dont le format est défini par la norme ISO/IEC 29500-2. Le package peut contenir plusieurs parties avec des relations entre elles. La relation entre les parties détermine la catégorie du document. Un document peut être défini comme un document de traitement de texte si son élément de relation de package contient une relation avec une partie principale de document. Si son élément de relation de package contient une relation avec une partie de présentation, il peut être défini comme un document de présentation. Si son élément de relation de package contient une relation avec une partie de classeur, il est défini en tant que feuille de calcul. Dans cette rubrique, vous utiliserez un package de documents de traitement de texte.


Obtention d’un objet WordprocessingDocument

L’exemple de code commence par ouvrir un fichier de package en passant un nom de fichier en tant qu’argument à l’une des méthodes Open() surchargées du DocumentFormat.OpenXml.Packaging.WordprocessingDocument qui prend une chaîne et une valeur booléenne qui spécifie si le fichier doit être ouvert en mode lecture/écriture ou non. Dans le cas présent, la valeur booléenne est true, ce qui indique que le fichier doit être ouvert en mode lecture-écriture.

    // Open a Wordprocessing document for editing.
    using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(document, true))
    {
          // Insert other code here.
    }

L'instruction using fournit une alternative recommandée à la séquence .Create, .Save, .Close habituelle. Elle garantit que la méthode Dispose (méthode interne utilisée par le kit de développement Open XML pour nettoyer les ressources) est automatiquement appelée lorsque l'accolade de fermeture est atteinte. Le bloc qui suit l’instruction using établit une étendue pour l’objet créé ou nommé dans l’instruction using, dans le cas présent wordDoc. Dans la mesure où la classe WordprocessingDocument du Kit de développement logiciel (SDK) Open XML enregistre et ferme automatiquement l’objet dans le cadre de son implémentation de System.IDisposable, et dans la mesure où la méthode Dispose est appelée automatiquement lorsque vous quittez le bloc, il n’est pas nécessaire d’appeler explicitement Save et Close (à condition d’utiliser using).


Structure d’un document WordProcessingML

La structure de base d’un document WordProcessingML se compose des éléments document et body , suivis d’un ou plusieurs éléments de niveau bloc tels que p, qui représente un paragraphe. Un paragraphe contient un ou plusieurs éléments r. Le r signifie « run » (exécution), qui est une zone de texte avec un ensemble de propriétés courant, comme par exemple la mise en forme. Une exécution contient un ou plusieurs éléments t. L'élément t contient une plage de texte. L’exemple de code suivant montre le balisage WordprocessingML pour un document qui contient le texte « Exemple de texte ».

    <w:document xmlns:w="https://schemas.openxmlformats.org/wordprocessingml/2006/main">
      <w:body>
        <w:p>
          <w:r>
            <w:t>Example text.</w:t>
          </w:r>
        </w:p>
      </w:body>
    </w:document>

À l’aide du Kit de développement logiciel (SDK) Open XML, vous pouvez créer une structure de document et du contenu à l’aide de classes fortement typées qui correspondent à des éléments WordprocessingML . Vous trouverez ces classes dans l'espace de noms DocumentFormat.OpenXml.Wordprocessing . Le tableau suivant répertorie les noms des classes qui correspondent aux éléments document, body, p, r et t.

Élément WordprocessingML Classe du Kit de développement logiciel (SDK) Open XML Description
document Document Élément racine de la partie principale du document.
body Body Conteneur des structures de niveau bloc, telles que paragraphs, tables, annotations et autres structures décrites dans la spécification ISO/IEC 29500.
p Paragraph Paragraphe.
r Run Exécution.
t Text Plage de texte.

Pour plus d’informations sur la structure globale des parties et éléments d’un document WordprocessingML, consultez Structure d’un document WordprocessingML.


Élément settings

Le texte suivant de la spécification ISO/IEC 29500 présente l’élément settings dans un package PresentationML .

Cet élément spécifie les paramètres qui ont été appliqués à un document WordprocessingML. Cet élément est l’élément racine du composant Paramètres du document dans un document WordprocessingML.
Exemple : Considérez le fragment WordprocessingML suivant pour la partie paramètres d’un document :

    <w:settings>
      <w:defaultTabStop w:val="720" />
      <w:characterSpacingControl w:val="dontCompress" />
    </w:settings>

L’élément settings contient tous les paramètres pour ce document. Dans le cas présent, les deux paramètres appliqués sont : des incréments de taquets par défaut automatiques de 0,5 pouces, appliqué à l’aide de l’élément defaultTabStop) et pas de compression d’espace vide au niveau des caractères, appliqué à l’aide de l’élément characterSpacingControl.

© ISO/IEC29500: 2008.


Fonctionnement de l’exemple de code

Après avoir ouvert le document, dans l’instruction using, en tant qu’objet WordprocessingDocument, vous créez une référence au composant DocumentSettingsPart . Vous pouvez vérifier si ce composant existe ; le cas échéant, supprimez ce composant du package. Dans le cas présent, le composant settings.xml est supprimé du package.

    MainDocumentPart mainPart = wordDoc.MainDocumentPart;
    if (mainPart.DocumentSettingsPart != null)
    {
        mainPart.DeletePart(mainPart.DocumentSettingsPart);
    }

Exemple de code

Le code suivant supprime un composant de document d’un package. Pour exécuter le programme, appelez la méthode RemovePart comme dans cet exemple.

    string document = @"C:\Users\Public\Documents\MyPkg6.docx";
    RemovePart(document);

Remarque

Avant d’exécuter le programme sur le fichier de test, « MyPkg6.docs », par exemple, ouvrez le fichier à l’aide de l’outil de productivité du Kit de développement logiciel (SDK) Open XML pour Microsoft Office et examinez sa structure. Après avoir exécuté le programme, examinez à nouveau le fichier : vous noterez que le composant DocumentSettingsPart a été supprimé.

Voici l'exemple de code complet en C# et Visual Basic.

using DocumentFormat.OpenXml.Packaging;

RemovePart(args[0]);

// To remove a document part from a package.
static void RemovePart(string document)
{
    using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(document, true))
    {
        MainDocumentPart? mainPart = wordDoc.MainDocumentPart;

        if (mainPart is not null && mainPart.DocumentSettingsPart is not null)
        {
            mainPart.DeletePart(mainPart.DocumentSettingsPart);
        }
    }
}

Voir aussi