Tworzenie dynamicznych plików Word DOCX za pomocą darmowego API C++

Otwartoźródłowa biblioteka C++ DOCX do generowania dokumentów Word (format .docx) bezpośrednio z kodu C++. Umożliwia dodawanie tabel i obrazów, zastosowanie formatów i stylów do tekstu oraz więcej.

Czym jest MiniDocx?

Praca z dokumentami Microsoft Word programowo tradycyjnie była trudnym zadaniem dla programistów C++, często wymagającym ciężkich zależności lub własnościowych instalacji oprogramowania. MiniDocx zmienia ten krajobraz, oferując lekkie, nowoczesne i przyjazne rozwiązanie do tworzenia dokumentów Word bezpośrednio z aplikacji C++. Ta otwartoźródłowa biblioteka eliminuje potrzebę instalacji Microsoft Office lub WPS Office, jednocześnie zapewniając solidną funkcjonalność manipulacji dokumentami. MiniDocx zawiera niezbędne funkcje obejmujące podstawowe aspekty tworzenia dokumentów Word. Obsługuje sekcje, akapity, formatowanie tekstu sformatowanego, tabele, obrazy, style i listy. Ten kompleksowy zestaw funkcji pozwala programistom tworzyć złożone, dobrze sformatowane dokumenty spełniające profesjonalne standardy.

MiniDocx to nowoczesna, otwartoźródłowa biblioteka C++, która umożliwia programistom tworzenie i manipulowanie dokumentami Microsoft Word .docx programowo — bez konieczności instalacji Microsoft Word ani WPS Office. Architektura biblioteki opiera się na nowoczesnych standardach C++20, wykorzystując najnowsze funkcje języka dla lepszej wydajności, bezpieczeństwa typów i przejrzystości kodu. Jedną z wyróżniających cech MiniDocx jest jej kompatybilność wieloplatformowa. Biblioteka działa płynnie na systemach Windows, Linux i macOS, co czyni ją doskonałym wyborem dla programistów tworzących aplikacje działające na wielu platformach.

Previous Next

Rozpoczęcie pracy z MiniDocx

Zalecany sposób instalacji MiniDocx to GitHub. Proszę użyć poniższego polecenia, aby przeprowadzić płynną instalację.

Zainstaluj MiniDocx poprzez GitHub

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

Tworzenie dokumentu Word Docx przy użyciu C++

Otwartoźródłowa biblioteka MiniDocx ułatwia programistom tworzenie i manipulowanie dokumentami Word Docx w aplikacjach C++. Biblioteka zawiera wsparcie dla stosowania formatowania, dodawania tekstu, tabel i obrazów w dokumentach Word. Najprostszym sposobem zrozumienia MiniDocx jest praktyczny przykład. Utworzenie podstawowego dokumentu Word z sformatowanym tekstem demonstruje intuicyjny projekt API biblioteki oraz prosty przebieg pracy.

Jak tworzyć dokumenty Word przy użyciu biblioteki C++?

#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;
}

Dodawanie tabel do dokumentów przy użyciu biblioteki C++

Tabele są niezbędne do prezentacji danych strukturalnych w dokumentach Word, a MiniDocx zapewnia kompleksowe możliwości tworzenia i formatowania tabel. Tabele składają się z wierszy i komórek, przy czym każda komórka może zawierać tekst, formatowanie, a nawet zagnieżdżoną treść. Tworzenie tabeli obejmuje kilka kroków: definiowanie struktury tabeli, dodawanie wierszy, wypełnianie komórek treścią oraz stosowanie formatowania. Oto szczegółowy przykład pokazujący, jak programiści mogą tworzyć sformatowaną tabelę w aplikacjach C++.

Jak stworzyć sformatowaną tabelę w dokumencie Word przy użyciu biblioteki C++?



#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;
}

Wstawianie obrazów i ilustracji do pliku Word DOCX

Treść wizualna zwiększa czytelność i atrakcyjność dokumentu, czyniąc obsługę obrazów krytyczną funkcją każdej biblioteki generującej dokumenty. MiniDocx umożliwia programistom wstawianie obrazów do dokumentów z kontrolą rozmiaru i położenia. Dodanie obrazów do dokumentu wymaga podania ścieżki do pliku obrazu oraz opcjonalnie ustawienia wymiarów. Oto przykład pokazujący, jak wstawić obraz do dokumentu Word przy użyciu biblioteki C++.

Jak wstawić obraz do dokumentu Word przy użyciu biblioteki C++?

#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;
}

Sekcje dokumentu i układ strony

Sekcje zapewniają strukturę do kontrolowania właściwości układu strony w dokumentach Word. Każda sekcja może mieć inne ustawienia strony, w tym rozmiar, orientację, marginesy, nagłówki i stopki. Ta architektura oparta na sekcjach umożliwia tworzenie złożonych układów dokumentów z różnymi konfiguracjami stron. Typowy przypadek użycia wielu sekcji to tworzenie dokumentów z zarówno stronami pionowymi, jak i poziomymi, np. raportów zawierających szerokie tabele lub wykresy wymagające orientacji poziomej. Oto przykład pokazujący, jak pracować z wieloma sekcjami dokumentów Word w aplikacjach C++.

Jak pracować z wieloma sekcjami dokumentów Word przy użyciu biblioteki C++?


#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;
}

 Polski