Les tableaux sont utiles pour organiser les informations et les chiffres. Nous insérons souvent des tableaux dans des documents Word (DOCX/DOC) pour afficher des informations. Dans une application de traitement de texte, vous pouvez facilement créer des tableaux à l’aide de C++. Vous pouvez parcourir les exemples suivants pour apprendre à utiliser des tableaux dans des documents Word :
- Insérer des tableaux dans l’API Word Documents
- Insérer un tableau dans des documents Word à l’aide de C++
- Insérer un tableau à partir de HTML dans des documents Word à l’aide de C++
- Insérer un tableau dans DOCX à l’aide de Document Builder en C++
Passons à l’exploration de tous ces sujets en détail :
Insérer des tableaux dans l’API Word Documents
Tout d’abord, veuillez noter que vous utiliserez l’API Aspose.Words for C++ pour insérer des tableaux dans un document Word. Vous pouvez configurer l’API en la téléchargeant depuis New Releases ou via la galerie NuGet. Une fois correctement configuré, vous pouvez simplement utiliser les méthodes, les propriétés et les classes exposées par l’API afin que quelques appels d’API simples puissent être utilisés pour créer, modifier ou manipuler des documents Microsoft Word, tels que des fichiers DOCX ou DOC.
Insérer un tableau dans des documents Word à l’aide de C++
Vous pouvez insérer un tableau dans des documents Word en quelques étapes simples. Cependant, il est important de noter ici que vous devez transmettre l’objet document au constructeur de chaque nœud afin que tous les nœuds enfants appartiennent au même objet. Vous devez suivre les étapes ci-dessous :
- Initialiser l’objet de la classe Document
- Créer un objet Table
- Ajouter le tableau au document
- Créer des lignes et des colonnes
- Appliquer AutoFit sur les cellules du tableau
- Enregistrer le document Word de sortie
L’extrait de code ci-dessous montre comment insérer un tableau dans un document Word (DOCX/DOC) à l’aide de C++ :
// Chemin d'accès au répertoire des documents.
System::String outputDataDir = dataDir;
System::SharedPtr<Document> doc = System::MakeObject<Document>();
// Nous commençons par créer l'objet table. Notez comment nous devons 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.
System::SharedPtr<Table> table = System::MakeObject<Table>(doc);
// Ajoutez le tableau au document.
doc->get_FirstSection()->get_Body()->AppendChild(table);
// Ici, nous pourrions appeler EnsureMinimum pour créer les lignes et les cellules pour nous. Cette méthode est utilisée
// Pour s'assurer que le nœud spécifié est valide, dans ce cas, une table valide doit avoir au moins un
// Ligne et une cellule, donc cette méthode les crée pour nous.
// Au lieu de cela, nous gérerons la création de la ligne et de la table nous-mêmes. Ce serait la meilleure façon de le faire
// Si nous créons une table à l'intérieur d'un algorithme par exemple.
System::SharedPtr<Row> row = System::MakeObject<Row>(doc);
row->get_RowFormat()->set_AllowBreakAcrossPages(true);
table->AppendChild(row);
// Nous pouvons maintenant appliquer tous les paramètres d'ajustement automatique.
table->AutoFit(AutoFitBehavior::FixedColumnWidths);
// Créer une cellule et l'ajouter à la ligne
System::SharedPtr<Cell> cell = System::MakeObject<Cell>(doc);
cell->get_CellFormat()->get_Shading()->set_BackgroundPatternColor(System::Drawing::Color::get_LightBlue());
cell->get_CellFormat()->set_Width(80);
// Ajoutez un paragraphe à la cellule ainsi qu'une nouvelle exécution avec du texte.
cell->AppendChild(System::MakeObject<Paragraph>(doc));
cell->get_FirstParagraph()->AppendChild(System::MakeObject<Run>(doc, u"Row 1, Cell 1 Text"));
// Ajoutez la cellule à la ligne.
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((System::StaticCast<Node>(cell))->Clone(false));
row->get_LastCell()->AppendChild(System::MakeObject<Paragraph>(doc));
row->get_LastCell()->get_FirstParagraph()->AppendChild(System::MakeObject<Run>(doc, u"Row 1, Cell 2 Text"));
System::String outputPath = outputDataDir + u"InsertTableDirectly.doc";
// Enregistrez le document sur le disque.
doc->Save(outputPath);
Insérer un tableau à partir de HTML dans des documents Word à l’aide de C++
Il est possible qu’un fichier HTML contienne un tableau que vous devez insérer dans vos documents Word tels que DOCX, DOC, etc. Ou vous devrez peut-être copier un tableau à partir d’un site Web. Ainsi, au lieu de créer et de concevoir le tableau à partir de zéro, vous pouvez facilement analyser le balisage HTML en tant que tableau dans un document Word. Par exemple, vous pouvez ajouter un tableau dans un document Word à l’aide de la chaîne HTML suivante :
<table><tr><td>Row 1, Cell 1</td><td>Row 1, Cell 2</td></tr><tr><td>Row 2, Cell 1</td><td>Row 2, Cell 2</td></tr></table>
Nous avons gardé le contenu simple afin que la prise en charge de la balise table puisse être démontrée avec un cas d’utilisation basique mais important. De plus, il est important de noter ici qu’AutoFit ne peut pas être appliqué sur des tableaux créés à partir de HTML.
Suivons les étapes ci-dessous pour insérer un tableau HTML dans un document Word :
- Initialiser une instance de la classe Document
- Passez le balisage HTML avec la méthode InsertHtml
- Enregistrer le fichier Word DOCX de sortie
Le code ci-dessous suit ces étapes et montre comment créer un tableau dans un document Word avec HTML en utilisant C++ :
// Chemin d'accès au répertoire des documents.
System::String outputDataDir = dataDir;
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Insérez le tableau depuis HTML. Notez que AutoFitSettings ne s'applique pas aux tables
// Inséré à partir de HTML.
builder->InsertHtml(u"<table><tr><td>Row 1, Cell 1</td><td>Row 1, Cell 2</td></tr><tr><td>Row 2, Cell 1</td><td>Row 2, Cell 2</td></tr></table>");
System::String outputPath = outputDataDir + u"InsertTableFromHtml.doc";
// Enregistrez le document sur le disque.
doc->Save(outputPath);
Vous pouvez remarquer que cette méthode est un peu plus simple que l’approche que nous avons explorée ci-dessus. La raison en est que vous n’avez pas besoin d’ajouter chaque nœud un par un pour les lignes, les colonnes ou les cellules car la balise Table dans la chaîne HTML contient toutes les informations. Voici une capture d’écran de ce tableau HTML simple ajouté au document Word :
Insérer un tableau à l’aide de Document Builder en C++
La meilleure chose à propos de l’API Aspose.Words for C++ est qu’elle offre une variété de fonctionnalités qui deviennent un avantage concurrentiel pour l’API et la distinguent des autres options. De même, la fonctionnalité d’insertion de tableau à l’aide d’un générateur de document est une autre approche d’ajout de tableaux dans des documents Word (DOC/DOCX). Explorons donc les détails sous trois angles différents :
1) Insérer un tableau simple dans DOCX avec Document Builder en utilisant C++
Pour ajouter un tableau simple dans un document Word avec Document Builder, vous devez suivre les étapes ci-dessous :
- Créer Document Objet
- Appelez la méthode StartTable() et insérez des cellules
- Ajouter la ligne et les cellules
- Enregistrer le fichier DOCX de sortie
De plus, l’extrait de code ci-dessous montre comment insérer un tableau simple dans un fichier DOCX avec C++ :
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Nous appelons cette méthode pour commencer à construire la table.
builder->StartTable();
builder->InsertCell();
builder->Write(u"Row 1, Cell 1 Content.");
// Construire la deuxième cellule
builder->InsertCell();
builder->Write(u"Row 1, Cell 2 Content.");
// Appelez la méthode suivante pour terminer la ligne et commencer une nouvelle ligne.
builder->EndRow();
// Construisez la première cellule de la deuxième rangée.
builder->InsertCell();
builder->Write(u"Row 2, Cell 1 Content");
// Construire la deuxième cellule.
builder->InsertCell();
builder->Write(u"Row 2, Cell 2 Content.");
builder->EndRow();
// Signalez que nous avons fini de construire la table.
builder->EndTable();
System::String outputPath = outputDataDir + u"InsertTableUsingDocumentBuilder.SimpleTable.doc";
// Enregistrez le document sur le disque.
doc->Save(outputPath);
2) Insérer un tableau formaté dans DOCX avec Document Builder en utilisant C++
Vous pouvez insérer un tableau formaté dans un document Word en suivant les étapes ci-dessous :
- Initialiser une instance de la classe Document
- Créer une ligne d’en-tête
- Définir des retraits et des fonctionnalités pour la mise en forme
- Réinitialiser le formatage de la police
- Enregistrer le fichier Word DOCX de sortie
L’extrait de code ci-dessous crée une table formatée dans le fichier DOCX à l’aide de C++ :
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
System::SharedPtr<Table> table = builder->StartTable();
// Faites la ligne d'en-tête.
builder->InsertCell();
// Définissez le retrait à gauche du tableau. La mise en forme à l'échelle du tableau doit être appliquée après
// Au moins une ligne est présente dans le tableau.
table->set_LeftIndent(20.0);
// Définissez la hauteur et définissez la règle de hauteur pour la ligne d'en-tête.
builder->get_RowFormat()->set_Height(40.0);
builder->get_RowFormat()->set_HeightRule(HeightRule::AtLeast);
// Quelques fonctionnalités spéciales pour la ligne d'en-tête.
builder->get_CellFormat()->get_Shading()->set_BackgroundPatternColor(System::Drawing::Color::FromArgb(198, 217, 241));
builder->get_ParagraphFormat()->set_Alignment(ParagraphAlignment::Center);
builder->get_Font()->set_Size(16);
builder->get_Font()->set_Name(u"Arial");
builder->get_Font()->set_Bold(true);
builder->get_CellFormat()->set_Width(100.0);
builder->Write(u"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(u"Header Row,\n Cell 2");
builder->InsertCell();
builder->get_CellFormat()->set_Width(200.0);
builder->Write(u"Header Row,\n Cell 3");
builder->EndRow();
// Définissez des fonctionnalités pour les autres lignes et cellules.
builder->get_CellFormat()->get_Shading()->set_BackgroundPatternColor(System::Drawing::Color::get_White());
builder->get_CellFormat()->set_Width(100.0);
builder->get_CellFormat()->set_VerticalAlignment(CellVerticalAlignment::Center);
// Réinitialiser la hauteur et définir une règle de hauteur différente pour le corps de la table
builder->get_RowFormat()->set_Height(30.0);
builder->get_RowFormat()->set_HeightRule(HeightRule::Auto);
builder->InsertCell();
// Réinitialisez la mise en forme de la police.
builder->get_Font()->set_Size(12);
builder->get_Font()->set_Bold(false);
// Construisez les autres cellules.
builder->Write(u"Row 1, Cell 1 Content");
builder->InsertCell();
builder->Write(u"Row 1, Cell 2 Content");
builder->InsertCell();
builder->get_CellFormat()->set_Width(200.0);
builder->Write(u"Row 1, Cell 3 Content");
builder->EndRow();
builder->InsertCell();
builder->get_CellFormat()->set_Width(100.0);
builder->Write(u"Row 2, Cell 1 Content");
builder->InsertCell();
builder->Write(u"Row 2, Cell 2 Content");
builder->InsertCell();
builder->get_CellFormat()->set_Width(200.0);
builder->Write(u"Row 2, Cell 3 Content.");
builder->EndRow();
builder->EndTable();
System::String outputPath = outputDataDir + u"InsertTableUsingDocumentBuilder.FormattedTable.doc";
// Enregistrez le document sur le disque.
doc->Save(outputPath);
3) Insérer un tableau imbriqué dans DOCX avec Document Builder en utilisant C++
Parfois, nous avons besoin d’une autre table à l’intérieur d’une table existante. Par exemple, une cellule d’une ligne ou d’une colonne d’un tableau peut contenir un sous-tableau pour une sous-catégorie ou un autre champ. Dans de tels scénarios, les tables imbriquées sont utiles et peuvent être ajoutées en suivant les étapes ci-dessous :
- Construisez la Table externe, puis appelez la méthode EndTable
- Construire la table interne à l’intérieur d’une cellule de la table externe
- Enregistrer le document Word de sortie
L’extrait de code suivant montre comment insérer un tableau imbriqué dans un document Word à l’aide de C++ :
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Construisez la table extérieure.
System::SharedPtr<Cell> cell = builder->InsertCell();
builder->Writeln(u"Outer Table Cell 1");
builder->InsertCell();
builder->Writeln(u"Outer Table Cell 2");
// Cet appel est important pour créer une table imbriquée dans la première table
// Sans cet appel, les cellules insérées ci-dessous seront ajoutées au tableau externe.
builder->EndTable();
// Accéder à la première cellule du tableau externe.
builder->MoveTo(cell->get_FirstParagraph());
// Construisez la table intérieure.
builder->InsertCell();
builder->Writeln(u"Inner Table Cell 1");
builder->InsertCell();
builder->Writeln(u"Inner Table Cell 2");
builder->EndTable();
System::String outputPath = outputDataDir + u"InsertTableUsingDocumentBuilder.NestedTable.doc";
// Enregistrez le document sur le disque.
doc->Save(outputPath);
Conclusion
En résumé, nous avons appris à insérer différents tableaux dans des documents Word en utilisant différentes approches. Vous pouvez insérer un tableau simple ou avec une chaîne HTML ainsi que des tableaux formatés et imbriqués dans les documents Word (DOC/DOCX). Cependant, en cas de confusion ou de question, vous pouvez nous contacter sur Forums d’assistance gratuits. De plus, vous pouvez également vous référer à API References et Product Documentation pour votre aimable référence.