Créer des documents Word en C++

Aspose.Words est une collection d’API riches en fonctionnalités qui vous permet de créer, de modifier et de convertir des documents MS Word par programmation. Il fournit un large éventail de fonctionnalités de base et avancées pour manipuler des documents de traitement de texte. Dans cet article, vous apprendrez à utiliser Aspose.Words for C++ et à créer des documents MS Word à partir de zéro en utilisant C++. Le guide étape par étape ainsi que des exemples de code vous permettront de savoir comment insérer du texte, des images, des tableaux, des listes et d’autres éléments dans des documents Word.

API C++ pour créer des documents MS Word

Aspose.Words for C++ vous permet de générer et de manipuler les documents de traitement de texte dans les applications C++ sans MS Word. Vous pouvez télécharger l’API ou l’installer dans vos applications C++ à l’aide de NuGet avec la commande suivante.

PM> Install-Package Aspose.Words.Cpp

Créer des documents MS Word à l’aide de C++

Commençons par créer un document Word simple et enregistrons-le en tant que fichier .doc ou .docx. Pour cela, vous devez suivre les étapes ci-dessous :

L’exemple de code suivant montre comment créer un document Word DOCX à l’aide de C++.

// Initialiser un document.
System::SharedPtr<Document> doc = System::MakeObject<Document>();
// Utilisez un générateur de document pour ajouter du contenu au document.
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Ajouter du texte
builder->Writeln(u"Hello World!"); 
// Enregistrez le document sur le disque.
doc->Save(u"document.docx");

Modifier ou mettre à jour Word DOC/DOCX existant à l’aide de C++

Vous pouvez également modifier les documents Word existants en utilisant Aspose.Words for C++. Pour cela, l’API utilise le Document Object Model (DOM) pour la représentation en mémoire d’un document. Le DOM vous permet d’accéder aux éléments d’un document Word tels que l’en-tête/le pied de page, les paragraphes, les tableaux, etc. En savoir plus sur le DOM ici.

Pour mettre à jour un document Word, chargez-le simplement à l’aide de la classe Document et traitez-le comme vous le souhaitez. Voici les étapes pour modifier et mettre à jour un document Word existant.

  • Chargez le document Word à l’aide de la classe Document.
  • Créez un objet de la classe DocumentBuilder pour accéder au contenu.
  • Accédez au paragraphe souhaité (ou à tout autre élément) et mettez à jour le contenu.
  • Enregistrez le document mis à jour en utilisant la méthode Document->Save().

L’exemple de code suivant montre comment mettre à jour le texte d’un paragraphe dans un document Word à l’aide de C++.

// Initialiser un document.
System::SharedPtr<Document> doc = System::MakeObject<Document>(u"document.docx");
// Utilisez un générateur de document pour ajouter du contenu au document.
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Obtenir la section
auto section = doc->get_Sections()->idx_get(0);
// Obtenir du corps
auto body = section->get_Body();
// Obtenir le premier paragraphe
auto para = body->get_FirstParagraph();
// Mettre à jour le texte
auto run = para->get_Runs()->idx_get(0);
run->set_Text(u"This is the updated text."); 
// Enregistrez le document sur le disque.
doc->Save(u"updated_document.docx");

Insérer des images dans un document Word à l’aide de C++

Voici les étapes pour insérer une image dans des documents MS Word à l’aide de C++.

L’exemple de code suivant montre comment insérer une image dans un document Word à l’aide de C++.

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc); 
// Ajoutez un logo en haut à gauche de la page. L'image est placée devant tout autre texte.
System::SharedPtr<Shape> shape = builder->InsertImage( u"Aspose Logo.png", RelativeHorizontalPosition::Page, 60.0, RelativeVerticalPosition::Page, 60.0, -1.0, -1.0, WrapType::None);
doc->Save(u"document_with_image.docx");

Insérer un tableau dans des documents Word à l’aide de C++

Le tableau est un élément important des documents Word pour conserver les données sous forme de lignes et de colonnes. Afin de générer un tableau dans les documents Word, suivez les étapes ci-dessous.

  • Créez un nouveau document Word en utilisant la classe Document.
  • Créez un objet de la classe Table.
  • Insérez un tableau dans le document à l’aide de la méthode Document->getFirstSection()->getBody()->AppendChild().
  • Créez une nouvelle ligne à l’aide de la classe Row.
  • Insérez une ligne dans la table à l’aide de la méthode Table->AppendChild(row).
  • Créez une nouvelle Cellule et insérez-y du texte à l’aide de la méthode Cell->getFirstParagraph()->AppendChild().
  • Insérez une cellule dans la ligne à l’aide de la méthode Row->AppendChild().
  • Répétez le processus pour ajouter plusieurs lignes.
  • Enregistrez le document en utilisant la méthode Document->Save().

L’exemple de code suivant montre comment insérer un tableau dans un document Word à l’aide de C++.

System::SharedPtr<Document> doc = System::MakeObject<Document>(); 
System::SharedPtr<Table> table = System::MakeObject<Table>(doc);
// Ajoutez le tableau au document.
doc->get_FirstSection()->get_Body()->AppendChild(table); 
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"));
// Enregistrez le document sur le disque.
doc->Save(u"document_with_table.docx");

Ajouter des listes dans des documents Word à l’aide de C++

Dernier point mais non le moindre, création d’une liste dans les documents Word. Voici les étapes pour créer une liste à puces.

  • Créez un nouveau document Word ou chargez-en un existant à l’aide de la classe Document.
  • Définissez un nouvel objet DocumentBuilder et initialisez-le avec l’objet Document.
  • Créez une liste à l’aide de la méthode DocumentBuilder->getListFormat()->setList(Document->getLists()->Add(ListTemplate::NumberArabicDot)).
  • Remplissez la liste et définissez le niveau de la liste.
  • Enregistrez le document en tant que fichier.

L’exemple de code suivant montre comment créer une liste dans un document Word à l’aide de C++.

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Créez une liste numérotée basée sur l'un des modèles de liste Microsoft Word et
// l'appliquer au paragraphe courant dans le générateur de document.
builder->get_ListFormat()->set_List(doc->get_Lists()->Add(ListTemplate::NumberArabicDot));
// Il y a 9 niveaux dans cette liste, essayons-les tous.
for (int32_t i = 0; i < 9; i++)
{
	builder->get_ListFormat()->set_ListLevelNumber(i);
	builder->Writeln(System::String(u"Level ") + i);
}
// Créer une liste à puces basée sur l'un des modèles de liste Microsoft Word
// and l'appliquer au paragraphe courant dans le générateur de document.
builder->get_ListFormat()->set_List(doc->get_Lists()->Add(ListTemplate::BulletDiamonds));
// Il y a 9 niveaux dans cette liste, essayons-les tous.
for (int32_t i = 0; i < 9; i++)
{
	builder->get_ListFormat()->set_ListLevelNumber(i);
	builder->Writeln(System::String(u"Level ") + i);
}
// C'est un moyen d'arrêter le formatage de la liste. 
builder->get_ListFormat()->set_List(nullptr); 
// Enregistrez le document sur le disque.
builder->get_Document()->Save(u"document_with_list.docx");

Conclusion

Dans cet article, vous avez vu comment créer des documents MS Word à partir de zéro en utilisant C++. De plus, vous avez appris à insérer des éléments tels que du texte, des images, des tableaux et des listes dans des documents Word nouveaux ou existants. Vous pouvez en savoir plus sur les fonctionnalités avancées de l’API à l’aide de la documentation.

Voir également