Dynaamisen Word DOCX -tiedoston luominen ilmaisella C++‑API:lla

Avoimen lähdekoodin C++ DOCX -kirjasto Word-dokumenttien (.docx) luomiseen suoraan C++-koodista. Se mahdollistaa taulukoiden & kuvien lisäämisen, muotojen & tyylien soveltamisen tekstiin & muuta.

Mikä on MiniDocx?

Microsoft Word -dokumenttien ohjelmallinen käsittely on perinteisesti ollut haastavaa C++-kehittäjille, usein vaatimalla kömpelöitä riippuvuuksia tai suljettua ohjelmistoa. MiniDocx muuttaa tätä tarjoamalla kevyen, modernin ja käyttäjäystävällisen ratkaisun Word-dokumenttien luomiseen suoraan C++-sovelluksista. Tämä avoimen lähdekoodin kirjasto poistaa Microsoft Office- tai WPS Office -asennusten tarpeen, tarjoten samalla vankat toiminnot dokumenttien muokkaamiseen. MiniDocx sisältää olennaisia ominaisuuksia, jotka kattavat Word-asiakirjojen luomisen perusasiat. Se tukee osioita, kappaleita, rikasta tekstin muotoilua, taulukoita, kuvia, tyylejä ja luetteloita. Tämä kattava ominaisuuspaketti mahdollistaa kehittäjille monimutkaisten, hyvin muotoiltujen asiakirjojen luomisen, jotka täyttävät ammattimaiset standardit.

MiniDocx on moderni, avoimen lähdekoodin C++-kirjasto, jonka avulla kehittäjät voivat luoda ja hallita Microsoft Word .docx -dokumentteja ohjelmallisesti – ilman, että Microsoft Word tai WPS Office tarvitsee olla asennettuna. Kirjaston arkkitehtuuri perustuu nykyaikaisiin C++20-standardeihin, hyödyntäen uusimpia kielen ominaisuuksia parempaan suorituskykyyn, tyyppiturvallisuuteen ja koodin selkeyteen. MiniDocxin yksi keskeinen ominaisuus on sen monialustainen yhteensopivuus. Kirjasto toimii saumattomasti Windows-, Linux- ja macOS-käyttöjärjestelmissä, joten se on erinomainen valinta kehittäjille, jotka luovat sovelluksia, jotka tarvitsevat monialustaa.

Previous Next

Aloittaminen MiniDocxin kanssa

Suositeltu tapa asentaa MiniDocx on GitHubin kautta. Käytä seuraavaa komentoa sujuvaan asennukseen.

Asenna MiniDocx GitHubin kautta

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

Word Docx -dokumentin luominen C++:lla

MiniDocxin ydinfilosofia perustuu yksinkertaisuuteen. Ohjelmallisesti luomisen sijaan teet mallin Microsoft Wordiin – tavallinen DOCX-tiedosto paikkamerkeillä – ja yhdistät dataasi siihen. Tämä lähestymistapa tarjoaa useita etuja, kuten nopeamman kehityksen, WYSIWYG-muokkauksen ja muuta. Tässä on hyödyllinen esimerkki, joka näyttää kuinka luodaan uusia Word-dokumentteja mallista C++-kirjaston avulla.

Miten luodaan Word-asiakirjoja C++-kirjaston avulla?

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

Taulukoiden lisääminen dokumentteihin C++-kirjaston avulla

MiniDocx tukee laajaa valikoimaa 1D- ja 2D-viivakoodeja, kuten Code39, Code128, EAN, UPC, ISBN, Databar, postikoodit, PDF417, Data Matrix, QR-koodi ja Maxi Code. Viivakoodit lisätään kenttinä malleihin ja renderöidään automaattisesti antamiesi tietojen perusteella. Tämä tekee siitä ihanteellisen varastonhallintajärjestelmiin, lähetys- ja logistiikkasovelluksiin, tuotelabelointiratkaisuihin, asiakirjojen seurantaratkaisuihin, vähittäiskaupan myyntipisteiden integraatioon ja niin edelleen.

Miten luodaan muotoiltu taulukko Word-dokumenttiin C++-kirjaston avulla?



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

Kuvien ja piirustusten lisääminen Word DOCX -tiedostoon

MiniDocx-kirjasto voi dynaamisesti täyttää kaavioiden tiedot, mikä mahdollistaa datalähtöisten visualisointien luomisen. Mallissasi määritellyt kaaviot voivat ohjelmallisesti päivittää sarjojaan, mikä tekee mahdollista luoda johtajuusnäkymät ja analyyttiset raportit. Kirjasto sisältää tukensa yli 70 kaaviotyypille, jotka ovat saatavilla Microsoft Wordissa, mukaan lukien sarake, viiva, piiri, palkki, alue, hajonta, varasto, pinta, donitsi, kupla, tuttakaavio jne. Tämä ominaisuus mahdollistaa dynaamiset talousraportit reaaliaikaisella datavisualisoinnilla, tilastoanalyysin asiakirjat, liiketoimintatiedon hallintapaneelit, tieteelliset tutkimusraportit, suorituskyvyn seurannan dokumentoinnin ja muuta.

Miten lisättään kuva Word-dokumenttiin C++-kirjaston avulla?

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

Asiakirjojen osiot ja sivun asettelu

MiniDocx-kirjasto säilyttää Wordin natiivimuotoilun samalla, kun se dynaamisesti säätää tyylejä C++-sovelluksissa. Kirjasto tukee erilaisia muotoilutoimintoja, kuten kirjasintyylejä, -kokoja ja -värejä, kappaleiden kohdistusta ja välistystä, mukautettuja reunuksia sisältäviä taulukoita, ylä- ja alatunnisteita, sivunumeroita ja osioiden katkaisuja, mukautettuja tyylejä ja teemoja jne. Luotu asiakirja säilyttää kaikki mallin muotoilut, varmistaen johdonmukaisen brändäyksen ja ammatillisen ulkoasun. Seuraava koodiesimerkki näyttää, kuinka kehittäjät voivat soveltaa ehdollista muotoilua datan perusteella C++‑sovelluksissa.

Miten työskennellä useiden Word-asiakirjojen osioiden kanssa C++-kirjaston avulla?


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

 Suomen