Tabeller är användbara för att organisera information och figurer. Vi infogar ofta tabeller i word-dokument (DOCX/DOC) för att visa information. I ett ordbehandlingsprogram kan du enkelt skapa tabeller med C++. Du kan gå igenom följande exempel för att lära dig att arbeta med tabeller i Word-dokument:

Låt oss gå vidare och utforska alla dessa ämnen i detalj:

Infoga tabeller i Word Documents API

För det första, vänligen notera att du kommer att använda Aspose.Words for C++ API för att infoga tabeller i ett word-dokument. Du kan konfigurera API:t genom att ladda ner det från New Releases eller via NuGet-galleriet. När du väl har konfigurerat korrekt kan du helt enkelt använda metoderna, egenskaperna och klasserna som exponeras av API:et så att några enkla API-anrop kan användas för att skapa, redigera eller manipulera Microsoft Word-dokument, som DOCX- eller DOC-filer.

Infoga en tabell i Word-dokument med C++

Du kan infoga en tabell i Word-dokument med några enkla steg. Det är dock viktigt att notera här att du måste skicka dokumentobjektet till konstruktören för varje nod så att alla underordnade noder tillhör samma objekt. Du måste följa stegen nedan:

  1. Initiera objekt i klassen Dokument
  2. Skapa Tabell objekt
  3. Lägg till tabellen i dokumentet
  4. Skapa rader och kolumner
  5. Använd AutoFit på tabellceller
  6. Spara utdata Word-dokument

Kodavsnittet nedan visar hur man infogar en tabell i Word-dokument (DOCX/DOC) med C++:

// Sökvägen till dokumentkatalogen.
System::String outputDataDir = dataDir;
System::SharedPtr<Document> doc = System::MakeObject<Document>();

// Vi börjar med att skapa tabellobjektet. Notera hur vi måste skicka dokumentobjektet
// Till konstruktören för varje nod. Detta beror på att varje nod vi skapar måste tillhöra
// Till något dokument.
System::SharedPtr<Table> table = System::MakeObject<Table>(doc);

// Lägg till tabellen i dokumentet.
doc->get_FirstSection()->get_Body()->AppendChild(table);

// Här skulle vi kunna ringa EnsureMinimum för att skapa raderna och cellerna åt oss. Denna metod används
// För att säkerställa att den angivna noden är giltig bör i detta fall en giltig tabell ha minst en
// Rad och en cell, därför skapar den här metoden dem åt oss.
// Istället kommer vi att hantera att skapa raden och tabellen själva. Detta skulle vara det bästa sättet att göra detta
// Om vi skulle skapa en tabell i en algoritm till exempel.
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"));
System::String outputPath = outputDataDir + u"InsertTableDirectly.doc";

// Spara dokumentet på disk.
doc->Save(outputPath);

Infoga tabell från HTML i Word-dokument med C++

Det är möjligt att en HTML-fil innehåller tabeller som du behöver infoga i dina Word-dokument som DOCX, DOC, etc. Eller så kan du behöva kopiera en tabell från en webbplats. Så istället för att skapa och designa tabellen från början, kan du enkelt analysera HTML-uppmärkning som en tabell till ett Word-dokument. Du kan till exempel lägga till en tabell i Word-dokument med hjälp av följande HTML-sträng:

<table><tr><td>Row 1, Cell 1</td><td>Row 1, Cell 2</td></tr><tr><td>Row 2, Cell 1</td><td>Row 2, Cell 2</td></tr></table>

Vi har hållit innehållet enkelt så att stödet för tabelltaggen kan demonstreras med grundläggande men ändå viktiga användningsfall. Dessutom är det viktigt att notera här att AutoFit inte kan tillämpas på tabeller som är skapade från HTML.

Låt oss följa stegen nedan för att infoga HTML-tabell i Word-dokument:

  1. Initiera en instans av klassen Dokument
  2. Skicka HTML-uppmärkningen med metoden InsertHtml
  3. Spara output DOCX word-fil

Nedanstående kod följer dessa steg och visar hur man skapar tabeller i Word-dokument med HTML med C++:

// Sökvägen till dokumentkatalogen.
System::String outputDataDir = dataDir;
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);

// Infoga tabellen från HTML. Observera att AutoFitSettings inte gäller tabeller
// Infogat från HTML.
builder->InsertHtml(u"<table><tr><td>Row 1, Cell 1</td><td>Row 1, Cell 2</td></tr><tr><td>Row 2, Cell 1</td><td>Row 2, Cell 2</td></tr></table>");

System::String outputPath = outputDataDir + u"InsertTableFromHtml.doc";
// Spara dokumentet på disk.
doc->Save(outputPath);

Du kan märka att den här metoden är lite enklare än metoden vi har utforskat ovan. Anledningen är att du inte behöver lägga till varje nod en efter en för raderna, kolumnerna eller cellerna eftersom tabelltaggen i HTML-strängen innehåller all information. Följande är en skärmdump av denna enkla HTML-tabell som lagts till i Word-dokumentet:

Infoga tabell i Word

Infoga tabell med Document Builder i C++

Det bästa med Aspose.Words för C++ API är att det erbjuder en mängd olika funktioner som blir en konkurrensfördel för API:et och gör att det sticker ut bland andra alternativ. På samma sätt är funktionen med infogningstabellen med hjälp av en dokumentbyggare ett annat sätt att lägga till tabeller i word-dokument (DOC/DOCX). Så låt oss utforska detaljerna från tre olika perspektiv:

1) Infoga enkel tabell i DOCX med Document Builder med C++

För att lägga till en enkel tabell i Word-dokument med Document Builder, måste du följa stegen nedan:

  1. Skapa Dokument Objekt
  2. Anropa metoden StartTable() och infoga celler
  3. Lägg till raden och cellerna
  4. Spara utdata DOCX-fil

Dessutom visar kodavsnittet nedan hur man infogar en enkel tabell i DOCX-fil med C++:

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);

// Vi kallar denna metod för att börja bygga tabellen.
builder->StartTable();
builder->InsertCell();
builder->Write(u"Row 1, Cell 1 Content.");

// Bygg den andra cellen
builder->InsertCell();
builder->Write(u"Row 1, Cell 2 Content.");

// Anropa följande metod för att avsluta raden och starta en ny rad.
builder->EndRow();

// Bygg den första cellen i den andra raden.
builder->InsertCell();
builder->Write(u"Row 2, Cell 1 Content");

// Bygg den andra cellen.
builder->InsertCell();
builder->Write(u"Row 2, Cell 2 Content.");
builder->EndRow();

// Signalerar att vi har byggt klart bordet.
builder->EndTable();
System::String outputPath = outputDataDir + u"InsertTableUsingDocumentBuilder.SimpleTable.doc";

// Spara dokumentet på disk.
doc->Save(outputPath);

2) Infoga formaterad tabell i DOCX med Document Builder med C++

Du kan infoga en formaterad tabell i ett Word-dokument med stegen nedan:

  1. Initiera en instans av klassen Document
  2. Gör rubrikrad
  3. Ställ in indrag och funktioner för formateringen
  4. Återställ teckensnittsformatering
  5. Spara utdata Word DOCX-fil

Nedan kodavsnitt skapar formaterad tabell i DOCX-fil med C++:

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
System::SharedPtr<Table> table = builder->StartTable();

// Gör rubrikraden.
builder->InsertCell();

// Ställ in vänster indrag för tabellen. Tabellbredformatering måste tillämpas efter
// Minst en rad finns i tabellen.
table->set_LeftIndent(20.0);

// Ställ in höjd och definiera höjdregeln för rubrikraden.
builder->get_RowFormat()->set_Height(40.0);
builder->get_RowFormat()->set_HeightRule(HeightRule::AtLeast);

// Några specialfunktioner för rubrikraden.
builder->get_CellFormat()->get_Shading()->set_BackgroundPatternColor(System::Drawing::Color::FromArgb(198, 217, 241));
builder->get_ParagraphFormat()->set_Alignment(ParagraphAlignment::Center);
builder->get_Font()->set_Size(16);
builder->get_Font()->set_Name(u"Arial");
builder->get_Font()->set_Bold(true);
builder->get_CellFormat()->set_Width(100.0);
builder->Write(u"Header Row,\n Cell 1");

// Vi behöver inte ange bredden på den här cellen eftersom den har ärvts från föregående cell.
builder->InsertCell();
builder->Write(u"Header Row,\n Cell 2");
builder->InsertCell();
builder->get_CellFormat()->set_Width(200.0);
builder->Write(u"Header Row,\n Cell 3");
builder->EndRow();

// Ställ in funktioner för de andra raderna och cellerna.
builder->get_CellFormat()->get_Shading()->set_BackgroundPatternColor(System::Drawing::Color::get_White());
builder->get_CellFormat()->set_Width(100.0);
builder->get_CellFormat()->set_VerticalAlignment(CellVerticalAlignment::Center);

// Återställ höjden och definiera en annan höjdregel för tabellkroppen
builder->get_RowFormat()->set_Height(30.0);
builder->get_RowFormat()->set_HeightRule(HeightRule::Auto);
builder->InsertCell();

// Återställ teckensnittsformatering.
builder->get_Font()->set_Size(12);
builder->get_Font()->set_Bold(false);

// Bygg de andra cellerna.
builder->Write(u"Row 1, Cell 1 Content");
builder->InsertCell();
builder->Write(u"Row 1, Cell 2 Content");
builder->InsertCell();
builder->get_CellFormat()->set_Width(200.0);
builder->Write(u"Row 1, Cell 3 Content");
builder->EndRow();
builder->InsertCell();
builder->get_CellFormat()->set_Width(100.0);
builder->Write(u"Row 2, Cell 1 Content");
builder->InsertCell();
builder->Write(u"Row 2, Cell 2 Content");
builder->InsertCell();
builder->get_CellFormat()->set_Width(200.0);
builder->Write(u"Row 2, Cell 3 Content.");
builder->EndRow();
builder->EndTable();
System::String outputPath = outputDataDir + u"InsertTableUsingDocumentBuilder.FormattedTable.doc";

// Spara dokumentet på disk.
doc->Save(outputPath);

3) Infoga Nested Table i DOCX med Document Builder med C++

Ibland behöver vi ett annat bord i ett befintligt bord. Till exempel kan en cell i någon rad eller kolumn i en tabell innehålla en undertabell för en underkategori eller något annat fält. I sådana scenarier är kapslade tabeller användbara som kan läggas till genom att följa stegen nedan:

  1. Bygg yttre Table och anropa sedan EndTable-metoden
  2. Bygg inre bord inuti en cell av yttre bord
  3. Spara utdata Word-dokument

Följande kodavsnitt visar hur man infogar kapslade tabeller i Word-dokument med C++:

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);

// Bygg ytterbordet.
System::SharedPtr<Cell> cell = builder->InsertCell();
builder->Writeln(u"Outer Table Cell 1");
builder->InsertCell();
builder->Writeln(u"Outer Table Cell 2");

// Detta anrop är viktigt för att skapa en kapslad tabell i den första tabellen
// Utan detta anrop kommer cellerna som infogas nedan att läggas till i den yttre tabellen.
builder->EndTable();

// Flytta till den första cellen i den yttre tabellen.
builder->MoveTo(cell->get_FirstParagraph());

// Bygg det inre bordet.
builder->InsertCell();
builder->Writeln(u"Inner Table Cell 1");
builder->InsertCell();
builder->Writeln(u"Inner Table Cell 2");
builder->EndTable();
System::String outputPath = outputDataDir + u"InsertTableUsingDocumentBuilder.NestedTable.doc";

// Spara dokumentet på disk.
doc->Save(outputPath);

Slutsats

Sammanfattningsvis har vi lärt oss hur man infogar olika tabeller i Word-dokument med olika tillvägagångssätt. Du kan infoga enkel tabell eller med HTML-sträng samt de formaterade och kapslade tabellerna i Word-dokumenten (DOC/DOCX). Men i fall av förvirring eller frågor kan du kontakta oss på Free Support Forums. Dessutom kan du också se API-referenser och Produktdokumentation för din vänliga referens.

Se även