Dynamisk opprettelse av Word DOCX-fil via gratis C++‑API

Åpen kildekode C++ DOCX-bibliotek for å generere Word-dokumenter (.docx-format) direkte fra C++-kode. Det gjør det mulig å legge til tabeller og bilder, anvende formater og stiler på tekst og mer.

Hva er MiniDocx?

Å jobbe med Microsoft Word-dokumenter programmatisk har tradisjonelt vært en utfordrende oppgave for C++-utviklere, ofte med krav om tunge avhengigheter eller proprietære programvareinstallasjoner. MiniDocx endrer dette landskapet ved å tilby en lettvektig, moderne og brukervennlig løsning for å opprette Word-dokumenter direkte fra C++-applikasjoner. Dette åpen kildekode-biblioteket eliminerer behovet for Microsoft Office eller WPS Office-installasjoner samtidig som det gir robust funksjonalitet for dokumentmanipulering. MiniDocx er pakke med essensielle funksjoner som dekker de grunnleggende aspektene ved opprettelse av Word-dokumenter. Det støtter seksjoner, avsnitt, riktekstformatering, tabeller, bilder, stiler og lister. Dette omfattende funksjonssettet gjør det mulig for utviklere å lage komplekse, godt formaterte dokumenter som oppfyller profesjonelle standarder.

MiniDocx er et moderne, åpen kildekode C++-bibliotek som gjør det mulig for utviklere å opprette og manipulere Microsoft Word .docx-dokumenter programmatisk — uten å kreve at Microsoft Word eller WPS Office er installert. Bibliotekets arkitektur er bygget rundt moderne C++20-standarder, og utnytter de nyeste språkfunksjonene for bedre ytelse, typesikkerhet og kodeklarhet. En av de fremtredende egenskapene til MiniDocx er dens plattformuavhengige kompatibilitet. Biblioteket fungerer sømløst på Windows, Linux og macOS-operativsystemer, noe som gjør det til et utmerket valg for utviklere som bygger applikasjoner som må kjøre på flere plattformer.

Previous Next

Kom i gang med MiniDocx

Den anbefalte måten å installere MiniDocx på er via GitHub. Vennligst bruk følgende kommando for en smidig installasjon.

Installer MiniDocx via GitHub

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

Opprette Word Docx-dokument via C++

Det åpen kildekode MiniDocx-biblioteket gjør det enkelt for programvareutviklere å opprette og manipulere Word Docx-dokumenter i C++-applikasjoner. Biblioteket har inkludert støtte for å anvende formatering, legge til tekst, tabeller og bilder i Word-dokumenter. Den enkleste måten å forstå MiniDocx på er gjennom et praktisk eksempel. Å lage et grunnleggende Word-dokument med formatert tekst demonstrerer bibliotekets intuitive API-design og enkle arbeidsflyt.

Hvordan opprette Word-dokumenter ved bruk av C++-biblioteket?

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

Legg til tabeller i dokumenter via C++-bibliotek

Tabeller er essensielle for å presentere strukturerte data i Word-dokumenter, og MiniDocx gir omfattende muligheter for opprettelse og formatering av tabeller. Tabeller består av rader og celler, hvor hver celle kan inneholde tekst, formatering og til og med innleiret innhold. Å opprette en tabell innebærer flere trinn: definere tabellstrukturen, legge til rader, fylle celler med innhold og anvende formatering. Her er et detaljert eksempel som viser hvordan programvareutviklere kan lage en formatert tabell i C++-apper.

Hvordan opprette en formatert tabell i Word-dokument via C++-biblioteket?



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

Sett inn bilder og illustrasjoner i Word DOCX-fil

Visuelt innhold forbedrer dokumentlesbarhet og engasjement, og gjør bildestøtte til en kritisk funksjon for ethvert dokumentgenereringsbibliotek. MiniDocx gjør det mulig for programvareutviklere å sette inn bilder i dokumenter med kontroll over størrelse og posisjonering. Å legge til bilder i et dokument krever at bildesti angis og eventuelt dimensjoner settes. Her er et eksempel som viser hvordan man setter inn et bilde i et Word-dokument via C++-biblioteket.

Hvordan sette inn et bilde i et Word-dokument via C++-biblioteket?

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

Dokumentseksjoner og sideoppsett

Seksjoner gir rammen for å kontrollere sideoppsetts-egenskaper i Word-dokumenter. Hver seksjon kan ha ulike sideinnstillinger, inkludert sidestørrelse, orientering, marger, topptekster og bunntekster. Denne seksjonsbaserte arkitekturen gjør det mulig med komplekse dokumentoppsett med varierende sidekonfigurasjoner. Et typisk brukstilfelle for flere seksjoner er å lage dokumenter med både stående og liggende sider, slik som rapporter som inneholder brede tabeller eller diagrammer som krever liggende orientering. Her er et eksempel som viser hvordan man arbeider med flere seksjoner av Word-dokumenter i C++-applikasjoner.

Hvordan arbeide med flere seksjoner av Word-dokumenter via C++-biblioteket?


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

 Norsk