Partager via


Ouvrir et ajouter du texte à un document de traitement de texte

Cette rubrique montre comment utiliser les classes du Kit de développement logiciel (SDK) Open XML pour Office afin d’ouvrir et d’ajouter du texte par programmation à un document de traitement Word.


Comment ouvrir et ajouter du texte à un document

Le Kit de développement logiciel (SDK) Open XML vous permet de créer Word traitement de la structure et du contenu du document à l’aide de classes fortement typées qui correspondent à WordprocessingML des éléments. Cette rubrique montre comment utiliser les classes du Kit de développement logiciel (SDK) Open XML pour ouvrir un document de traitement Word et y ajouter du texte. En outre, cette rubrique présente la structure de base d’un WordprocessingML document, les éléments XML associés et les classes du Kit de développement logiciel (SDK) Open XML correspondantes.


Créer un objet WordprocessingDocument

Dans le Kit de développement logiciel (SDK) Open XML, la WordprocessingDocument classe représente un package de document Word. Pour ouvrir et utiliser un document Word, créez un instance de la WordprocessingDocument classe à partir du document. Une fois cette instance créée à partir du document, vous pouvez accéder à la partie principale du document qui contient le texte du document. Le texte du composant de document main est représenté dans le package au format XML à l’aide WordprocessingML d’un balisage.

Pour créer la classe instance à partir du document, vous appelez l’une Open des méthodes . Plusieurs méthodes sont fournies, chacune avec une signature différente. L’exemple de code de cette rubrique utilise la Open(String, Boolean) méthode avec une signature qui nécessite deux paramètres. Le premier paramètre prend la chaîne de chemin d'accès complet qui représente le document à ouvrir. Le deuxième paramètre est ou truefalse et indique si vous souhaitez ouvrir le fichier pour modification. Les modifications que vous apportez au document ne seront pas enregistrées si ce paramètre est false.

L’exemple de code suivant appelle la Open méthode .

// Open a WordprocessingDocument for editing using the filepath.
using (WordprocessingDocument wordprocessingDocument = WordprocessingDocument.Open(filepath, true))
{

    if (wordprocessingDocument is null)
    {
        throw new ArgumentNullException(nameof(wordprocessingDocument));
    }

Une fois le package de documents Word ouvert, vous pouvez ajouter du texte à la partie principale du document. Pour accéder au corps du composant de document main, créez les éléments manquants et affectez une référence au corps du document, comme indiqué dans l’exemple de code suivant.

// Assign a reference to the existing document body.
MainDocumentPart mainDocumentPart = wordprocessingDocument.MainDocumentPart ?? wordprocessingDocument.AddMainDocumentPart();
mainDocumentPart.Document ??= new Document();
mainDocumentPart.Document.Body ??= mainDocumentPart.Document.AppendChild(new Body());
Body body = wordprocessingDocument.MainDocumentPart!.Document!.Body!;

Structure d’un document WordProcessingML

La structure de base d’un WordProcessingML document se compose des document éléments 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 r éléments. l’acronyme r de run, qui est une région de texte avec un ensemble commun de propriétés, telles que la mise en forme. Une exécution contient un ou plusieurs t éléments. L’élément t contient une plage de texte. L’exemple de code suivant montre le WordprocessingML balisage d’un document qui contient le texte « Exemple de texte ».

    <w:document xmlns:w="http://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 à WordprocessingML des éléments. Vous trouverez ces classes dans l’espace de DocumentFormat.OpenXml.Wordprocessing noms . Le tableau suivant répertorie les noms de classes des classes qui correspondent aux documentéléments , body, p, ret 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.


Générer le balisage WordprocessingML pour ajouter du texte

Lorsque vous avez accès au corps du composant de document main, ajoutez du texte en ajoutant des instances des Paragraphclasses , Runet Text . Cette action génère le balisage WordprocessingML requis. L’exemple de code suivant ajoute le paragraphe .

// Add new text.
Paragraph para = body.AppendChild(new Paragraph());
Run run = para.AppendChild(new Run());
run.AppendChild(new Text(txt));

Exemple de code

L’exemple OpenAndAddTextToWordDocument de méthode présenté ici peut être utilisé pour ouvrir un document Word et ajouter du texte à l’aide du Kit de développement logiciel (SDK) Open XML. Pour appeler cette méthode, transmettez un nom de fichier de chemin d'accès complet comme premier paramètre et le texte à ajouter comme deuxième paramètre.

string file = args[0];
string txt = args[1];

OpenAndAddTextToWordDocument(args[0], args[1]);

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

Notez que la OpenAndAddTextToWordDocument méthode n’inclut pas d’appel explicite à Save. En effet, la fonctionnalité d’enregistrement automatique est activée par défaut et n’a pas été désactivée dans l’appel à la Open méthode via l’utilisation de OpenSettings.

using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
using System;

static void OpenAndAddTextToWordDocument(string filepath, string txt)
{
    // Open a WordprocessingDocument for editing using the filepath.
    using (WordprocessingDocument wordprocessingDocument = WordprocessingDocument.Open(filepath, true))
    {

        if (wordprocessingDocument is null)
        {
            throw new ArgumentNullException(nameof(wordprocessingDocument));
        }

        // Assign a reference to the existing document body.
        MainDocumentPart mainDocumentPart = wordprocessingDocument.MainDocumentPart ?? wordprocessingDocument.AddMainDocumentPart();
        mainDocumentPart.Document ??= new Document();
        mainDocumentPart.Document.Body ??= mainDocumentPart.Document.AppendChild(new Body());
        Body body = wordprocessingDocument.MainDocumentPart!.Document!.Body!;

        // Add new text.
        Paragraph para = body.AppendChild(new Paragraph());
        Run run = para.AppendChild(new Run());
        run.AppendChild(new Text(txt));
    }
}

Voir aussi