Skapa Word-dokument i C++

Aspose.Words är en funktionsrik samling av API:er som låter dig skapa, redigera och konvertera MS Word-dokument programmatiskt. Den tillhandahåller ett brett utbud av grundläggande såväl som avancerade funktioner för att manipulera ordbehandlingsdokument. I den här artikeln kommer du att lära dig hur du använder Aspose.Words for C++ och skapar MS Word-dokument från grunden med C++. Steg-för-steg-guiden samt kodexempel låter dig veta hur du infogar text, bilder, tabeller, listor och andra element i Word-dokument.

C++ API för att skapa MS Word-dokument

Aspose.Words for C++ låter dig generera och manipulera ordbehandlingsdokument i C++-program utan MS Word. Du kan ladda ner API:t eller installera det i dina C++-applikationer med hjälp av NuGet med följande kommando.

PM> Install-Package Aspose.Words.Cpp

Skapa MS Word-dokument med C++

Låt oss först skapa ett enkelt Word-dokument och spara det som en .doc- eller .docx-fil. För detta måste du följa stegen nedan:

Följande kodexempel visar hur man skapar ett Word DOCX-dokument med C++.

// Initiera ett dokument.
System::SharedPtr<Document> doc = System::MakeObject<Document>();
// Använd en dokumentbyggare för att lägga till innehåll i dokumentet.
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Lägg till text
builder->Writeln(u"Hello World!"); 
// Spara dokumentet på disk.
doc->Save(u"document.docx");

Redigera eller uppdatera befintligt Word DOC/DOCX med C++

Du kan också redigera befintliga Word-dokument med Aspose.Words för C++. För detta använder API:n Document Object Model (DOM) för in-memory representation av ett dokument. DOM låter dig komma åt elementen i ett Word-dokument, såsom sidhuvud/sidfot, stycken, tabeller, etc. Läs mer om DOM här.

För att uppdatera ett Word-dokument laddar du det helt enkelt med klassen Dokument och bearbetar det efter önskemål. Följande är stegen för att redigera och uppdatera ett befintligt Word-dokument.

  • Ladda Word-dokumentet med klassen Dokument.
  • Skapa ett objekt av klassen DocumentBuilder för att komma åt innehållet.
  • Gå till önskat stycke (eller något annat element) och uppdatera innehållet.
  • Spara det uppdaterade dokumentet med metoden Dokument->Spara().

Följande kodexempel visar hur du uppdaterar texten i ett stycke i ett Word-dokument med C++.

// Initiera ett dokument.
System::SharedPtr<Document> doc = System::MakeObject<Document>(u"document.docx");
// Använd en dokumentbyggare för att lägga till innehåll i dokumentet.
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Skaffa avsnitt
auto section = doc->get_Sections()->idx_get(0);
// Få kropp
auto body = section->get_Body();
// Få första stycket
auto para = body->get_FirstParagraph();
// Uppdatera text
auto run = para->get_Runs()->idx_get(0);
run->set_Text(u"This is the updated text."); 
// Spara dokumentet på disk.
doc->Save(u"updated_document.docx");

Infoga bilder i Word-dokument med C++

Följande är stegen för att infoga en bild i MS Word-dokument med C++.

Följande kodexempel visar hur man infogar en bild i ett Word-dokument med C++.

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc); 
// Lägg till en logotyp längst upp till vänster på sidan. Bilden placeras framför all annan text.
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");

Infoga tabell i Word-dokument med C++

Tabellen är en viktig del av Word-dokumenten för att hålla data i form av rader och kolumner. Följ stegen nedan för att skapa en tabell i Word-dokumenten.

  • Skapa ett nytt Word-dokument med klassen Document.
  • Skapa ett objekt av klassen Table.
  • Infoga tabell i dokumentet med metoden Document->getFirstSection()->getBody()->AppendChild().
  • Skapa en ny rad med klassen Row.
  • Infoga rad i tabellen med Table->AppendChild(row)-metoden.
  • Skapa och ny Cell och infoga text i den med metoden Cell->getFirstParagraph()->AppendChild().
  • Infoga cell i raden med metoden Row->AppendChild().
  • Upprepa processen för att lägga till flera rader.
  • Spara dokumentet med metoden Dokument->Spara().

Följande kodexempel visar hur man infogar en tabell i Word-dokument med C++.

System::SharedPtr<Document> doc = System::MakeObject<Document>(); 
System::SharedPtr<Table> table = System::MakeObject<Table>(doc);
// Lägg till tabellen i dokumentet.
doc->get_FirstSection()->get_Body()->AppendChild(table); 
System::SharedPtr<Row> row = System::MakeObject<Row>(doc);
row->get_RowFormat()->set_AllowBreakAcrossPages(true);
table->AppendChild(row);
// Vi kan nu tillämpa alla inställningar för automatisk passning.
table->AutoFit(AutoFitBehavior::FixedColumnWidths);
// Skapa en cell och lägg till den i raden
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);
// Lägg till ett stycke i cellen samt en ny körning med lite text.
cell->AppendChild(System::MakeObject<Paragraph>(doc));
cell->get_FirstParagraph()->AppendChild(System::MakeObject<Run>(doc, u"Row 1, Cell 1 Text"));
// Lägg till cellen i raden.
row->AppendChild(cell);
// Vi skulle sedan upprepa processen för de andra cellerna och raderna i tabellen.
// Vi kan också påskynda saker och ting genom att klona befintliga celler och rader.
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"));
// Spara dokumentet på disk.
doc->Save(u"document_with_table.docx");

Lägg till listor i Word-dokument med C++

Sist men inte minst, skapa en lista i Word-dokumenten. Följande är stegen för att skapa en punktlista.

  • Skapa ett nytt Word-dokument eller ladda ett befintligt med klassen Dokument.
  • Definiera ett nytt DocumentBuilder-objekt och initiera det med Document-objektet.
  • Skapa lista med metoden DocumentBuilder->getListFormat()->setList(Document->getLists()->Add(ListMall::NumberArabicDot)).
  • Fyll i listan och ställ in listnivån.
  • Spara dokumentet som en fil.

Följande kodexempel visar hur man skapar en lista i ett Word-dokument med C++.

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Skapa en numrerad lista baserad på en av Microsoft Word-listmallarna och
// tillämpa det på det aktuella stycket i dokumentbyggaren.
builder->get_ListFormat()->set_List(doc->get_Lists()->Add(ListTemplate::NumberArabicDot));
// Det finns 9 nivåer i den här listan, låt oss prova dem alla.
for (int32_t i = 0; i < 9; i++)
{
	builder->get_ListFormat()->set_ListLevelNumber(i);
	builder->Writeln(System::String(u"Level ") + i);
}
// Skapa en punktlista baserad på en av Microsoft Word-listmallarna
// and tillämpa det på det aktuella stycket i dokumentbyggaren.
builder->get_ListFormat()->set_List(doc->get_Lists()->Add(ListTemplate::BulletDiamonds));
// Det finns 9 nivåer i den här listan, låt oss prova dem alla.
for (int32_t i = 0; i < 9; i++)
{
	builder->get_ListFormat()->set_ListLevelNumber(i);
	builder->Writeln(System::String(u"Level ") + i);
}
// Detta är ett sätt att stoppa listformatering. 
builder->get_ListFormat()->set_List(nullptr); 
// Spara dokumentet på disk.
builder->get_Document()->Save(u"document_with_list.docx");

Slutsats

I den här artikeln har du sett hur du skapar MS Word-dokument från början med C++. Vidare har du lärt dig att infoga element som text, bilder, tabeller och listor i nya eller befintliga Word-dokument. Du kan utforska mer om de avancerade funktionerna i API:t med hjälp av dokumentationen.

Se även