Partager via


Modifier le texte d’un tableau dans un document de traitement de texte

Cette rubrique montre comment utiliser le Kit de développement logiciel (SDK) Open XML pour Office pour modifier par programmation le texte d’un tableau dans un document de traitement de texte existant.

Ouvrir le document existant

Pour ouvrir un document existant, instanciez la WordprocessingDocument classe comme indiqué dans l’instruction suivante using . Dans la même instruction, ouvrez le fichier de traitement de texte au spécifié filepath à l’aide de la Open méthode , avec le paramètre booléen défini sur true pour permettre la modification du document.

using (WordprocessingDocument doc = WordprocessingDocument.Open(filePath, true))

Avec v3.0.0+ la Close() méthode a été supprimée au profit de l’instruction using. Il garantit que la Dispose() méthode est automatiquement appelée lorsque l’accolade fermante est atteinte. Le bloc qui suit l’instruction using établit une étendue pour l’objet créé ou nommé dans l’instruction using. Étant donné que la WordprocessingDocument classe du Kit de développement logiciel (SDK) Open XML enregistre et ferme automatiquement l’objet dans le cadre de son IDisposable implémentation, et que Dispose() est appelée automatiquement lorsque vous quittez le bloc, vous n’avez pas à appeler Save() explicitement ou Dispose() tant que vous utilisez une using instruction.

Structure d’un tableau

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.

Le document peut contenir un tableau, comme dans cet exemple. Un table est un ensemble de paragraphes (et d’autres contenus au niveau du bloc) organisés dans rows et columns. Les tables dans WordprocessingML sont définies via l’élément tbl , qui est analogue à la balise de table HTML. Considérons un tableau ayant une seule cellule vide (c’est-à-dire, un tableau avec une ligne et une colonne) et des bordures à 1 point de tous les côtés. Cette table est représentée par l’exemple de code suivant WordprocessingML .

    <w:tbl>
      <w:tblPr>
        <w:tblW w:w="5000" w:type="pct"/>
        <w:tblBorders>
          <w:top w:val="single" w:sz="4" w:space="0" w:color="auto"/>
          <w:left w:val="single" w:sz="4 w:space="0" w:color="auto"/>
          <w:bottom w:val="single" w:sz="4" w:space="0" w:color="auto"/>
          <w:right w:val="single" w:sz="4" w:space="0" w:color="auto"/>
        </w:tblBorders>
      </w:tblPr>
      <w:tblGrid>
        <w:gridCol w:w="10296"/>
      </w:tblGrid>
      <w:tr>
        <w:tc>
          <w:tcPr>
            <w:tcW w:w="0" w:type="auto"/>
          </w:tcPr>
          <w:p/>
        </w:tc>
      </w:tr>
    </w:tbl>

Ce tableau spécifie des propriétés à l’échelle du tableau de 100 % de la largeur de page à l’aide de l’élément tblW , un ensemble de bordures de table utilisant l’élément tblBorders , la grille de table, qui définit un ensemble de bords verticaux partagés dans la table à l’aide de l’élément tblGrid , et une seule ligne de table utilisant l’élément tr .

Fonctionnement de l’exemple de code

Dans l’exemple de code, après avoir ouvert le document dans l’instruction using , vous localisez la première table dans le document. Puis, vous localisez la seconde ligne du tableau en recherchant la ligne d’index 1. Ensuite, vous localisez la troisième cellule dans cette ligne d’index 2, comme dans l’exemple suivant.

// Find the first table in the document.
Table table = doc.MainDocumentPart.Document.Body.Elements<Table>().First();

// Find the second row in the table.
TableRow row = table.Elements<TableRow>().ElementAt(1);

// Find the third cell in the row.
TableCell cell = row.Elements<TableCell>().ElementAt(2);

Après avoir localisé la cellule cible, vous localisez la première séquence dans le premier paragraphe de la cellule et remplacez le texte par le texte passé en paramètre. L’exemple de code suivant illustre ces opérations.

// Find the first paragraph in the table cell.
Paragraph p = cell.Elements<Paragraph>().First();

// Find the first run in the paragraph.
Run r = p.Elements<Run>().First();

// Set the text for the run.
Text t = r.Elements<Text>().First();
t.Text = txt;

Modifier le texte d’une cellule d’un tableau

L’exemple de code suivant montre comment modifier le texte dans la cellule de tableau spécifiée dans un document de traitement de texte. L’exemple de code s’attend à ce que le document, dont le nom de fichier et le chemin d’accès soient passés en tant qu’argument à la ChangeTextInCell méthode, contienne une table. Il s’attend également à ce que le tableau ait au moins deux lignes et trois colonnes, et à ce qu’il contienne du texte dans la cellule située sur la deuxième ligne, dans la troisième colonne. Lorsque vous appelez la ChangeTextInCell méthode dans votre programme, le texte de la cellule à l’emplacement spécifié est remplacé par le texte que vous transmettez en tant que deuxième argument de la ChangeTextInCell méthode.

Texte Texte Texte
Texte Texte Texte du deuxième argument

Exemple de code

La ChangeTextInCell méthode modifie le texte de la deuxième ligne et de la troisième colonne de la première table trouvée dans le fichier. Vous l’appelez en lui passant le chemin d’accès complet au fichier comme premier paramètre, et le texte à utiliser comme second paramètre. Par exemple, l’appel suivant à la ChangeTextInCell méthode modifie le texte dans la cellule spécifiée en « Texte de l’exemple d’API ».

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

L’exemple ci-après contient le code complet.

// Change the text in a table in a word processing document.
static void ChangeTextInCell(string filePath, string txt)
{
    // Use the file name and path passed in as an argument to 
    // open an existing document.
    using (WordprocessingDocument doc = WordprocessingDocument.Open(filePath, true))
    {
        if (doc.MainDocumentPart is null || doc.MainDocumentPart.Document.Body is null)
        {
            throw new ArgumentNullException("MainDocumentPart and/or Body is null.");
        }

        // Find the first table in the document.
        Table table = doc.MainDocumentPart.Document.Body.Elements<Table>().First();

        // Find the second row in the table.
        TableRow row = table.Elements<TableRow>().ElementAt(1);

        // Find the third cell in the row.
        TableCell cell = row.Elements<TableCell>().ElementAt(2);
        // Find the first paragraph in the table cell.
        Paragraph p = cell.Elements<Paragraph>().First();

        // Find the first run in the paragraph.
        Run r = p.Elements<Run>().First();

        // Set the text for the run.
        Text t = r.Elements<Text>().First();
        t.Text = txt;
    }
}

Voir aussi

Informations de référence sur la bibliothèque de classes du Kit de développement logiciel (SDK) Open XML

Procédure : Modifier le texte dans un tableau dans un document de traitement de texte

Language Integrated Query (LINQ)

Méthodes d’extension (Guide de programmation C#)

Méthodes d’extension (Visual Basic)