créer des tableaux dans des documents Word en utilisant Java

Microsoft Word est une application de traitement de texte populaire utilisée pour créer différents types de documents. Ces documents peuvent contenir plusieurs types d’éléments, notamment du texte, des images, des tableaux et des graphiques. Lorsqu’il s’agit d’automatiser la création et la manipulation de documents en Java, vous aurez peut-être besoin d’une solution simple pour créer des tableaux dans des documents Word. Ainsi, dans cet article de blog, nous explorerons comment créer des tableaux dans des documents Word dans une application Java.

Bibliothèque Java pour créer des tableaux dans des documents Word

Aspose.Words for Java est une API qui permet aux développeurs Java de travailler avec des documents Microsoft Word par programme. Il offre un large éventail de fonctionnalités pour créer, modifier et manipuler des documents Word, ce qui en fait un outil précieux pour automatiser les tâches de génération et de traitement de documents. Nous utiliserons cette bibliothèque pour insérer des tableaux dans un document Word.

Vous pouvez télécharger la bibliothèque ou l’installer à l’aide des configurations Maven suivantes.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-words</artifactId>
    <version>23.10</version>
    <classifier>jdk17</classifier>
</dependency>

Créer un tableau dans un document Word en Java

Il existe deux façons de créer des tableaux dans des documents Word à l’aide d’Aspose.Words for Java :

  • Utilisation de DocumentBuilder
  • Utilisation du DOM (modèle objet de document)

Vous pouvez choisir la méthode qui correspond le mieux à vos besoins. Explorons donc chacune de ces méthodes en détail.

Créer un tableau à l’aide de DocumentBuilder

La classe DocumentBuilder vous offre un moyen rapide et simple de créer des documents dynamiques à partir de zéro ou de traiter des documents existants. Il offre une gamme de fonctions pour insérer divers éléments de contenu tels que du texte, des cases à cocher, des objets OLE, des paragraphes, des listes, des tableaux, des images, etc.

Voici les étapes qui utilisent la classe DocumentBuilder pour créer un tableau dans un document Word en Java.

  • Créez un objet de la classe Document pour charger ou créer le document Word.
  • Créez un objet de la classe DocumentBuilder.
  • Démarrez une table à l’aide de la méthode DocumentBuilder.startTable().
  • Insérez une cellule à l’aide de la méthode DocumentBuilder.insertCell().
  • (Facultatif) Appliquez une mise en forme à la cellule, telle que la police et l’alignement.
  • Insérez du texte dans la cellule à l’aide de la méthode DocumentBuilder.write().
  • Répétez l’insertion de cellules et de texte dans les cellules si nécessaire.
  • Terminez une ligne lorsque vous avez terminé l’insertion de cellules à l’aide de la méthode DocumentBuilder.endRow().
  • Terminez le tableau lorsque vous avez inséré toutes les lignes à l’aide de la méthode DocumentBuilder.endTable().
  • Enregistrez le document Word à l’aide de la méthode Document.save().

L’extrait de code suivant montre comment créer un tableau dans un document Word à l’aide de Java.

// Créer ou charger un document.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Créez un nouveau tableau et insérez une cellule.
Table table = builder.startTable();
builder.insertCell();

// Le formatage à l’échelle du tableau doit être appliqué une fois qu’au moins une ligne est présente dans le tableau.
table.setLeftIndent(20.0);

// Définissez la hauteur et définissez la règle de hauteur pour la ligne d'en-tête.
builder.getRowFormat().setHeight(40.0);
builder.getRowFormat().setHeightRule(HeightRule.AT_LEAST);

builder.getCellFormat().getShading().setBackgroundPatternColor(new Color((198), (217), (241)));
builder.getParagraphFormat().setAlignment(ParagraphAlignment.CENTER);
builder.getFont().setSize(16.0);
builder.getFont().setName("Arial");
builder.getFont().setBold(true);

builder.getCellFormat().setWidth(100.0);
builder.write("Header Row,\n Cell 1");

// Nous n'avons pas besoin de spécifier la largeur de cette cellule car elle est héritée de la cellule précédente.
builder.insertCell();
builder.write("Header Row,\n Cell 2");

builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Header Row,\n Cell 3");
builder.endRow();

builder.getCellFormat().getShading().setBackgroundPatternColor(Color.WHITE);
builder.getCellFormat().setWidth(100.0);
builder.getCellFormat().setVerticalAlignment(CellVerticalAlignment.CENTER);

// Réinitialisez la hauteur et définissez une règle de hauteur différente pour le corps du tableau.
builder.getRowFormat().setHeight(30.0);
builder.getRowFormat().setHeightRule(HeightRule.AUTO);
builder.insertCell();
        
// Réinitialisez le formatage de la police.
builder.getFont().setSize(12.0);
builder.getFont().setBold(false);

builder.write("Row 1, Cell 1 Content");
builder.insertCell();
builder.write("Row 1, Cell 2 Content");

builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Row 1, Cell 3 Content");
builder.endRow();

builder.insertCell();
builder.getCellFormat().setWidth(100.0);
builder.write("Row 2, Cell 1 Content");

builder.insertCell();
builder.write("Row 2, Cell 2 Content");

builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Row 2, Cell 3 Content.");
builder.endRow();

// Fin de table.
builder.endTable();

// Enregistrez le document.
doc.save("table.docx");

Voici la capture d’écran du tableau que nous avons créé à l’aide de l’exemple de code ci-dessus.

Tableau dans un document Word

Créer une table en utilisant DOM

Le Document Object Model (DOM) est une représentation en mémoire d’un document Word qui vous permet de lire, manipuler et modifier par programme le contenu et la mise en forme d’un document Word. Les étapes suivantes montrent comment créer un tableau dans un document Word à l’aide de DOM.

  • Créez un objet de la classe Document pour charger ou créer le document Word.
  • Créez un objet de la classe Table et insérez un tableau dans le document à l’aide de la méthode Document.getFirstSection().getBody().appendChild(Table).
  • Créez un objet de la classe Row et insérez-le dans le tableau à l’aide de la méthode Table.appendChild(Row).
  • Créez un objet de la classe Cell, définissez les options de formatage et ajoutez du texte à la cellule.
  • Insérez une cellule dans la ligne à l’aide de la méthode Row.appendChild(Cell).
  • Répétez le processus pour autant de lignes que vous le souhaitez.
  • Enregistrez le document Word à l’aide de la méthode Document.save().

L’extrait de code suivant montre comment créer un tableau dans un document Word en Java.

// Créer ou charger un document.
Document doc = new Document();
        
// Nous commençons par créer l’objet table. Notez qu'il faut passer l'objet document
// au constructeur de chaque nœud. C'est parce que chaque nœud que nous créons doit appartenir
// à un document.
Table table = new Table(doc);
doc.getFirstSection().getBody().appendChild(table);

// Ici, nous pourrions appeler EnsureMinimum pour créer les lignes et les cellules pour nous. Cette méthode est utilisée
// pour garantir que le nœud spécifié est valide. Dans ce cas, un tableau valide doit avoir au moins une ligne et une cellule.

// Au lieu de cela, nous nous occuperons nous-mêmes de la création de la ligne et du tableau.
// Ce serait la meilleure façon de procéder si nous créions une table dans un algorithme.
Row row = new Row(doc);
row.getRowFormat().setAllowBreakAcrossPages(true);
table.appendChild(row);

// Nous pouvons maintenant appliquer tous les paramètres d'ajustement automatique.
table.autoFit(AutoFitBehavior.FIXED_COLUMN_WIDTHS);

Cell cell = new Cell(doc);
cell.getCellFormat().getShading().setBackgroundPatternColor(Color.BLUE);
cell.getCellFormat().setWidth(80.0);
cell.appendChild(new Paragraph(doc));
cell.getFirstParagraph().appendChild(new Run(doc, "Row 1, Cell 1 Text"));

row.appendChild(cell);

// Nous répéterions ensuite le processus pour les autres cellules et lignes du tableau.
// Nous pouvons également accélérer les choses en clonant des cellules et des lignes existantes.
row.appendChild(cell.deepClone(false));
row.getLastCell().appendChild(new Paragraph(doc));
row.getLastCell().getFirstParagraph().appendChild(new Run(doc, "Row 1, Cell 2 Text"));

// Enregistrez le document.
doc.save("table.docx");

Insérer un tableau imbriqué dans des documents Word

Il peut également arriver que vous ayez besoin de créer un tableau imbriqué, situé à l’intérieur d’une cellule de la table parent. Vous pouvez le faire sans passer par un processus complexe. Tout d’abord, créez une table parent, puis appelez la méthode DocumentBuilder.moveTo(Cell.getFirstParagraph()) pour déplacer le contrôle à l’intérieur de la cellule souhaitée de la table parent. Une fois cela fait, créez un nouveau tableau de la même manière.

L’extrait de code suivant montre comment créer un tableau imbriqué dans un document Word à l’aide de Java.

// Créer ou charger un document.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Insérez une cellule.
Cell cell = builder.insertCell();
builder.writeln("Outer Table Cell 1");

builder.insertCell();
builder.writeln("Outer Table Cell 2");

// Cet appel est important pour créer une table imbriquée au sein de la première table. 
// Sans cet appel, les cellules insérées ci-dessous seront ajoutées au tableau externe.
builder.endTable();

// Accédez à la première cellule du tableau externe.
builder.moveTo(cell.getFirstParagraph());

// Construisez la table intérieure.
builder.insertCell();
builder.writeln("Inner Table Cell 1");
builder.insertCell();
builder.writeln("Inner Table Cell 2");
builder.endTable();

// Enregistrez le document.
doc.save("table.docx");

Voici la capture d’écran du tableau imbriqué que nous avons créé ci-dessus.

Nested Table in a Word Document

Créer un tableau Word à partir de HTML en Java

Vous pouvez également créer un tableau dans un document Word à l’aide d’une chaîne HTML et voici les étapes à suivre.

  • Créez un objet de la classe Document pour charger ou créer le document Word.
  • Créez un objet de la classe DocumentBuilder.
  • Insérez la chaîne HTML du tableau dans le document à l’aide de la méthode DocumentBuilder.insertHtml(String).
  • Enfin, enregistrez le document à l’aide de la méthode Document.save().

Vous trouverez ci-dessous l’extrait de code permettant de générer un tableau Word à partir d’une chaîne HTML.

// Créer ou charger un document.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Notez qu'AutoFitSettings ne s'applique pas aux tableaux insérés à partir de HTML.
builder.insertHtml("<table>" +
                   "<tr>" +
                   "<td>Row 1, Cell 1</td>" +
                   "<td>Row 1, Cell 2</td>" +
                   "</tr>" +
                   "<tr>" +
                   "<td>Row 2, Cell 2</td>" +
                   "<td>Row 2, Cell 2</td>" +
                   "</tr>" +
                   "</table>");

// Enregistrez le document.
doc.save("table.docx");

Obtenez une licence gratuite

Vous pouvez obtenir une licence temporaire pour utiliser Aspose.Words for Java sans limitations d’évaluation.

Conclusion

Dans cet article de blog, nous avons expliqué comment créer des tableaux dans des documents Word à l’aide de Java. Vous avez vu comment créer un tableau à l’aide du générateur de documents ou de DOM, créer un tableau imbriqué et créer un tableau à partir d’une chaîne HTML. En installant la bibliothèque et en suivant les instructions, vous pouvez facilement intégrer la fonctionnalité de création de table dans votre application Java.

Aspose.Words for Java fournit de nombreuses autres fonctionnalités et options de formatage, vous permettant de créer facilement des documents riches et complexes. Pour en savoir plus sur Aspose.Words for Java, explorez sa documentation et ses exemples complets. En cas de questions, n’hésitez pas à nous le faire savoir via notre forum.

Voir également