Dynamische Word DOCX-Dateierstellung via kostenlose C++‑API

Open‑Source C++ DOCX-Bibliothek zur Erzeugung von Word-Dokumenten (.docx-Format) direkt aus C++‑Code. Sie ermöglicht das Hinzufügen von Tabellen & Bildern, das Anwenden von Formaten & Stilen auf Text & mehr.

Was ist MiniDocx?

Die programmgesteuerte Arbeit mit Microsoft Word-Dokumenten war für C++‑Entwickler traditionell eine anspruchsvolle Aufgabe, die oft sperrige Abhängigkeiten oder proprietäre Softwareinstallationen erforderte. MiniDocx ändert dieses Bild, indem es eine leichte, moderne und benutzerfreundliche Lösung zum Erstellen von Word-Dokumenten direkt aus C++‑Anwendungen bietet. Diese Open‑Source‑Bibliothek eliminiert die Notwendigkeit von Microsoft Office‑ oder WPS Office‑Installationen und liefert gleichzeitig robuste Funktionen zur Dokumentmanipulation. MiniDocx ist mit wesentlichen Funktionen ausgestattet, die die grundlegenden Aspekte der Word-Dokumenterstellung abdecken. Sie unterstützt Sektionen, Absätze, Rich‑Text‑Formatierung, Tabellen, Bilder, Stile und Listen. Dieses umfassende Funktionsset ermöglicht es Entwicklern, komplexe, gut formatierte Dokumente zu erstellen, die professionellen Standards entsprechen.

MiniDocx ist eine moderne, Open‑Source C++‑Bibliothek, die es Entwicklern ermöglicht, Microsoft Word .docx‑Dokumente programmgesteuert zu erstellen und zu manipulieren – ohne dass Microsoft Word oder WPS Office installiert sein müssen. Die Architektur der Bibliothek basiert auf modernen C++20‑Standards und nutzt die neuesten Sprachfeatures für bessere Leistung, Typsicherheit und Code‑Klarheit. Eine der herausragenden Eigenschaften von MiniDocx ist seine plattformübergreifende Kompatibilität. Die Bibliothek funktioniert nahtlos unter Windows, Linux und macOS und ist damit eine ausgezeichnete Wahl für Entwickler, die Anwendungen bauen, die auf mehreren Plattformen laufen müssen.

Previous Next

Erste Schritte mit MiniDocx

Der empfohlene Weg, MiniDocx zu installieren, ist über GitHub. Bitte verwenden Sie den folgenden Befehl für eine reibungslose Installation.

MiniDocx via GitHub installieren

git clone git@github.com:totravel/minidocx.git 
cd minidocx  
You can also download it directly from Aspose product page.

Erstellung eines Word Docx-Dokuments via C++

Die Open‑Source‑Bibliothek MiniDocx erleichtert Softwareentwicklern das Erstellen und Manipulieren von Word‑Docx‑Dokumenten innerhalb von C++‑Anwendungen. Die Bibliothek enthält Unterstützung für das Anwenden von Formatierungen, das Hinzufügen von Text, Tabellen und Bildern in Word‑Dokumenten. Der einfachste Weg, MiniDocx zu verstehen, ist ein praktisches Beispiel. Das Erstellen eines einfachen Word‑Dokuments mit formatiertem Text demonstriert das intuitive API‑Design und den klaren Arbeitsablauf der Bibliothek.

Wie erstelle ich Word-Dokumente mit der C++‑Bibliothek?

#include "minidocx/minidocx.hpp"
#include 

int main()
{
  using namespace md;
  try {
    Document doc;
    SectionPointer sect = doc.addSection();

    ParagraphPointer para = sect->addParagraph();
    para->prop_.align_ = Alignment::Centered;

    RichTextPointer rich = para->addRichText("Happy Chinese New Year!");
    rich->prop_.fontSize_ = 32;
    rich->prop_.color_ = "FF0000";

    doc.saveAs("a.docx");
  }
  catch (const Exception& ex) {
    std::cerr << ex.what() << std::endl;
  }
  return 0;
}

Tabellen zu Dokumenten via C++-Bibliothek hinzufügen

Tabellen sind unverzichtbar, um strukturierte Daten in Word‑Dokumenten darzustellen, und MiniDocx bietet umfassende Möglichkeiten zur Erstellung und Formatierung von Tabellen. Tabellen bestehen aus Zeilen und Zellen, wobei jede Zelle Text, Formatierungen und sogar verschachtelte Inhalte enthalten kann. Das Erstellen einer Tabelle umfasst mehrere Schritte: die Definition der Tabellenstruktur, das Hinzufügen von Zeilen, das Befüllen der Zellen mit Inhalt und das Anwenden von Formatierungen. Hier ist ein detailliertes Beispiel, das zeigt, wie Softwareentwickler in C++‑Apps eine formatierte Tabelle erstellen können.

Wie erstelle ich eine formatierte Tabelle in einem Word-Dokument via C++‑Bibliothek?



#include "minidocx/minidocx.hpp"

int main()
{
  using namespace md;
  try {
    Document doc;
    SectionPointer sect = doc.addSection();

    // Create a table with 3 rows and 2 columns
    TablePointer table = sect->addTable(3, 2);

    // Access and populate cells
    // First row - header
    auto cell00 = table->cell(0, 0);
    auto para00 = cell00->addParagraph();
    auto text00 = para00->addRichText("Name");
    text00->prop_.bold_ = true;

    auto cell01 = table->cell(0, 1);
    auto para01 = cell01->addParagraph();
    auto text01 = para01->addRichText("Age");
    text01->prop_.bold_ = true;

    // Second row
    auto cell10 = table->cell(1, 0);
    auto para10 = cell10->addParagraph();
    para10->addRichText("Alice");

    auto cell11 = table->cell(1, 1);
    auto para11 = cell11->addParagraph();
    para11->addRichText("25");

    // Third row
    auto cell20 = table->cell(2, 0);
    auto para20 = cell20->addParagraph();
    para20->addRichText("Bob");

    auto cell21 = table->cell(2, 1);
    auto para21 = cell21->addParagraph();
    para21->addRichText("30");

    doc.saveAs("table_document.docx");
  }
  catch (const Exception& ex) {
    std::cerr << ex.what() << std::endl;
  }
  return 0;
}

Bilder und Grafiken in Word DOCX-Datei einfügen

Visueller Inhalt verbessert die Lesbarkeit und Attraktivität von Dokumenten, weshalb die Bildunterstützung eine kritische Funktion für jede Dokumentgenerierungsbibliothek ist. MiniDocx ermöglicht es Softwareentwicklern, Bilder in Dokumente einzufügen und dabei Größe und Position zu steuern. Das Hinzufügen von Bildern zu einem Dokument erfordert die Angabe des Bilddateipfads und optional die Festlegung von Abmessungen. Hier ein Beispiel, das zeigt, wie man ein Bild in ein Word‑Dokument via C++‑Bibliothek einfügt.

Wie füge ich ein Bild in ein Word-Dokument via C++‑Bibliothek ein?

#include "minidocx/minidocx.hpp"

int main()
{
  using namespace md;
  try {
    Document doc;
    SectionPointer sect = doc.addSection();

    // Add a paragraph before the image
    ParagraphPointer para1 = sect->addParagraph();
    para1->addRichText("Below is an important diagram:");

    // Add a paragraph containing the image
    ParagraphPointer para2 = sect->addParagraph();
    para2->prop_.align_ = Alignment::Centered;

    // Insert the picture
    PicturePointer pic = para2->addPicture("path/to/image.png");
    pic->prop_.width_ = 400;
    pic->prop_.height_ = 300;

    // Add a paragraph after the image
    ParagraphPointer para3 = sect->addParagraph();
    para3->addRichText("Figure 1: Important visualization");

    doc.saveAs("document_with_image.docx");
  }
  catch (const Exception& ex) {
    std::cerr << ex.what() << std::endl;
  }
  return 0;
}

Dokumentensektionen und Seitenlayout

Sektionen bilden das Gerüst zur Steuerung von Seitengestaltungseigenschaften in Word‑Dokumenten. Jede Sektion kann unterschiedliche Seiteneinstellungen haben, einschließlich Seitengröße, Ausrichtung, Rändern, Kopf‑ und Fußzeilen. Diese sektionenbasierte Architektur ermöglicht komplexe Dokumentlayouts mit variierenden Seitenkonfigurationen. Ein typischer Anwendungsfall für mehrere Sektionen ist das Erstellen von Dokumenten mit sowohl Hoch- als auch Querformatseiten, etwa Berichte, die breite Tabellen oder Diagramme enthalten, die ein Querformat erfordern. Hier ein Beispiel, das zeigt, wie man in C++‑Anwendungen mit mehreren Sektionen von Word‑Dokumenten arbeitet.

Wie arbeitet man mit mehreren Sektionen von Word-Dokumenten via C++‑Bibliothek?


#include "minidocx/minidocx.hpp"

int main()
{
  using namespace md;
  try {
    Document doc;

    // First section with portrait orientation
    SectionPointer sect1 = doc.addSection();
    sect1->prop_.orientation_ = Orientation::Portrait;
    sect1->prop_.pageWidth_ = 8.5 * 1440; // Letter size in twips
    sect1->prop_.pageHeight_ = 11 * 1440;

    ParagraphPointer para1 = sect1->addParagraph();
    para1->addRichText("This is content in portrait orientation.");

    // Second section with landscape orientation
    SectionPointer sect2 = doc.addSection();
    sect2->prop_.orientation_ = Orientation::Landscape;
    sect2->prop_.pageWidth_ = 11 * 1440;
    sect2->prop_.pageHeight_ = 8.5 * 1440;

    ParagraphPointer para2 = sect2->addParagraph();
    para2->addRichText("This content appears in landscape orientation.");

    doc.saveAs("multi_section_document.docx");
  }
  catch (const Exception& ex) {
    std::cerr << ex.what() << std::endl;
  }
  return 0;
}

 Deutsch