Tabulky jsou užitečné pro uspořádání informací a obrázků. Do dokumentů aplikace Word často vkládáme tabulky (DOCX/DOC), abychom zobrazili informace. V aplikaci pro zpracování textu můžete snadno vytvářet tabulky pomocí C++. Můžete si projít následující příklady, abyste se naučili pracovat s tabulkami v dokumentech aplikace Word:

Pojďme podrobně prozkoumat všechna tato témata:

Vložit tabulky do rozhraní API dokumentů aplikace Word

Nejprve si prosím uvědomte, že k vkládání tabulek do wordového dokumentu budete používat Aspose.Words for C++ API. Rozhraní API můžete nakonfigurovat stažením z New Releases nebo prostřednictvím galerie NuGet. Po správné konfiguraci můžete jednoduše využít metody, vlastnosti a třídy vystavené rozhraním API, takže k vytváření, úpravám nebo manipulaci s dokumenty Microsoft Word, jako jsou soubory DOCX nebo DOC, lze použít několik jednoduchých volání rozhraní API.

Vložit tabulku do dokumentů aplikace Word pomocí C++

Tabulku můžete do dokumentů aplikace Word vložit pomocí několika jednoduchých kroků. Zde je však důležité poznamenat, že musíte předat objekt dokumentu konstruktoru každého uzlu, aby všechny podřízené uzly patřily stejnému objektu. Musíte postupovat podle níže uvedených kroků:

  1. Inicializujte objekt třídy Document
  2. Vytvořte Tabulku objekt
  3. Přidejte tabulku do dokumentu
  4. Vytvářejte řádky a sloupce
  5. Použít AutoFit na buňky tabulky
  6. Uložit výstupní dokument aplikace Word

Níže uvedený fragment kódu ukazuje, jak vložit tabulku do dokumentu Word (DOCX/DOC) pomocí C++:

// Cesta k adresáři dokumentů.
System::String outputDataDir = dataDir;
System::SharedPtr<Document> doc = System::MakeObject<Document>();

// Začneme vytvořením objektu tabulky. Všimněte si, jak musíme předat objekt dokumentu
// Ke konstruktoru každého uzlu. Je to proto, že každý uzel, který vytvoříme, musí patřit
// K nějakému dokumentu.
System::SharedPtr<Table> table = System::MakeObject<Table>(doc);

// Přidejte tabulku do dokumentu.
doc->get_FirstSection()->get_Body()->AppendChild(table);

// Zde bychom mohli zavolat SecureMinimum, aby za nás vytvořili řádky a buňky. Tato metoda se používá
// Aby bylo zajištěno, že zadaný uzel je platný, v tomto případě by platná tabulka měla mít alespoň jeden
// Řádek a jedna buňka, proto je tato metoda vytvoří za nás.
// Místo toho si vytvoříme řádek a tabulku sami. To by byl nejlepší způsob, jak to udělat
// Pokud bychom například vytvářeli tabulku uvnitř algoritmu.
System::SharedPtr<Row> row = System::MakeObject<Row>(doc);
row->get_RowFormat()->set_AllowBreakAcrossPages(true);
table->AppendChild(row);

// Nyní můžeme použít libovolné nastavení automatického přizpůsobení.
table->AutoFit(AutoFitBehavior::FixedColumnWidths);

// Vytvořte buňku a přidejte ji do řádku
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);

// Přidejte do buňky odstavec a také nový běh s nějakým textem.
cell->AppendChild(System::MakeObject<Paragraph>(doc));
cell->get_FirstParagraph()->AppendChild(System::MakeObject<Run>(doc, u"Row 1, Cell 1 Text"));

// Přidejte buňku do řádku.
row->AppendChild(cell);

// Poté bychom postup opakovali pro další buňky a řádky v tabulce.
// Věci můžeme urychlit také klonováním existujících buněk a řádků.
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";

// Uložte dokument na disk.
doc->Save(outputPath);

Vložit tabulku z HTML do dokumentů Word pomocí C++

Je možné, že soubor HTML obsahuje tabulku, kterou potřebujete vložit do dokumentů aplikace Word, jako jsou DOCX, DOC atd. Nebo možná budete muset zkopírovat tabulku z webové stránky. Takže místo vytváření a návrhu tabulky od začátku můžete snadno analyzovat značky HTML jako tabulku do dokumentu aplikace Word. Můžete například přidat tabulku do dokumentu aplikace Word pomocí následujícího řetězce HTML:

<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>

Obsah jsme zachovali jednoduchý, aby bylo možné podporu pro tag tabulky demonstrovat na základním, ale důležitém případu použití. Navíc je zde důležité poznamenat, že Automatické přizpůsobení nelze použít na tabulky, které jsou vytvořeny z HTML.

Při vkládání tabulky HTML do dokumentu aplikace Word postupujte podle následujících kroků:

  1. Inicializujte instanci třídy Document
  2. Předejte značku HTML pomocí metody InsertHtml
  3. Uložit výstupní soubor DOCX word

Níže uvedený kód následuje tyto kroky a ukazuje, jak vytvořit tabulku v dokumentu Word s HTML pomocí C++:

// Cesta k adresáři dokumentů.
System::String outputDataDir = dataDir;
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);

// Vložte tabulku z HTML. Všimněte si, že AutoFitSettings se nevztahuje na tabulky
// Vloženo z 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";
// Uložte dokument na disk.
doc->Save(outputPath);

Můžete si všimnout, že tato metoda je o něco jednodušší než přístup, který jsme prozkoumali výše. Důvodem je, že nemusíte přidávat každý uzel jeden po druhém pro řádky, sloupce nebo buňky, protože tag Table v řetězci HTML obsahuje všechny informace. Následuje snímek obrazovky této jednoduché HTML tabulky přidané do dokumentu aplikace Word:

Vložit tabulku do aplikace Word

Vložit tabulku pomocí Tvůrce dokumentů v C++

Nejlepší na Aspose.Words for C++ API je to, že nabízí řadu funkcí, které se stávají konkurenční výhodou pro API a díky nimž vyniká mezi ostatními možnostmi. Podobně funkce vkládání tabulky pomocí tvůrce dokumentů je další přístup k přidávání tabulek do dokumentů aplikace Word (DOC/DOCX). Podívejme se tedy na podrobnosti ze tří různých pohledů:

1) Vložte jednoduchou tabulku do DOCX pomocí Document Builder pomocí C++

Chcete-li přidat jednoduchou tabulku do dokumentu aplikace Word pomocí Tvůrce dokumentů, musíte postupovat podle následujících kroků:

  1. Vytvořte objekt Document
  2. Zavolejte metodu StartTable() a vložte buňky
  3. Přidejte řádek a buňky
  4. Uložit výstupní soubor DOCX

Kromě toho níže uvedený fragment kódu ukazuje, jak vložit jednoduchou tabulku do souboru DOCX s C++:

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

// Tuto metodu nazýváme, abychom začali sestavovat tabulku.
builder->StartTable();
builder->InsertCell();
builder->Write(u"Row 1, Cell 1 Content.");

// Sestavte druhou buňku
builder->InsertCell();
builder->Write(u"Row 1, Cell 2 Content.");

// Zavolejte následující metodu pro ukončení řádku a zahájení nového řádku.
builder->EndRow();

// Vytvořte první buňku druhého řádku.
builder->InsertCell();
builder->Write(u"Row 2, Cell 1 Content");

// Sestavte druhou buňku.
builder->InsertCell();
builder->Write(u"Row 2, Cell 2 Content.");
builder->EndRow();

// Signál, že jsme dokončili stavbu stolu.
builder->EndTable();
System::String outputPath = outputDataDir + u"InsertTableUsingDocumentBuilder.SimpleTable.doc";

// Uložte dokument na disk.
doc->Save(outputPath);

2) Vložte formátovanou tabulku do DOCX pomocí Document Builder pomocí C++

Formátovanou tabulku můžete vložit do dokumentu aplikace Word pomocí následujících kroků:

  1. Inicializujte instanci třídy Document
  2. Vytvořte řádek záhlaví
  3. Nastavte odsazení a funkce pro formátování
  4. Obnovit formátování písma
  5. Uložit výstupní soubor Word DOCX

Níže uvedený fragment kódu vytvoří formátovanou tabulku v souboru DOCX pomocí C++:

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

// Vytvořte řádek záhlaví.
builder->InsertCell();

// Nastavte levé odsazení tabulky. Poté je nutné použít formátování na šířku tabulky
// V tabulce je přítomen alespoň jeden řádek.
table->set_LeftIndent(20.0);

// Nastavte výšku a definujte pravidlo výšky pro řádek záhlaví.
builder->get_RowFormat()->set_Height(40.0);
builder->get_RowFormat()->set_HeightRule(HeightRule::AtLeast);

// Některé speciální funkce pro řádek záhlaví.
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");

// Šířku této buňky nemusíme zadávat, protože je zděděna z předchozí buňky.
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();

// Nastavte funkce pro ostatní řádky a buňky.
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);

// Resetovat výšku a definovat jiné pravidlo výšky pro tělo stolu
builder->get_RowFormat()->set_Height(30.0);
builder->get_RowFormat()->set_HeightRule(HeightRule::Auto);
builder->InsertCell();

// Obnovit formátování písma.
builder->get_Font()->set_Size(12);
builder->get_Font()->set_Bold(false);

// Postavte další buňky.
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";

// Uložte dokument na disk.
doc->Save(outputPath);

3) Vložte vnořenou tabulku do DOCX pomocí Document Builder pomocí C++

Někdy potřebujeme další tabulku uvnitř existující tabulky. Například buňka v některém řádku nebo sloupci tabulky může obsahovat podtabulku pro podkategorii nebo nějaké jiné pole. V takových scénářích jsou užitečné vnořené tabulky, které lze přidat podle následujících kroků:

  1. Sestavte vnější Tabulku a poté zavolejte metodu EndTable
  2. Vytvořte vnitřní tabulku uvnitř buňky vnější tabulky
  3. Uložit výstupní textový dokument

Následující fragment kódu ukazuje, jak vložit vnořenou tabulku do dokumentu Word pomocí C++:

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

// Sestavte vnější stůl.
System::SharedPtr<Cell> cell = builder->InsertCell();
builder->Writeln(u"Outer Table Cell 1");
builder->InsertCell();
builder->Writeln(u"Outer Table Cell 2");

// Toto volání je důležité pro vytvoření vnořené tabulky v první tabulce
// Bez tohoto volání budou buňky vložené níže připojeny k vnější tabulce.
builder->EndTable();

// Přesuňte se do první buňky vnější tabulky.
builder->MoveTo(cell->get_FirstParagraph());

// Sestavte vnitřní stůl.
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";

// Uložte dokument na disk.
doc->Save(outputPath);

Závěr

Abych to shrnul, naučili jsme se, jak vkládat různé tabulky do dokumentů aplikace Word pomocí různých přístupů. Do wordových dokumentů (DOC/DOCX) můžete vložit jednoduchou tabulku nebo s HTML řetězcem i formátované a vnořené tabulky. V případě jakýchkoli nejasností nebo dotazů nás však můžete kontaktovat na Free Support Forums. Kromě toho můžete také odkazovat na Odkazy na rozhraní API a Dokumentace k produktu, kde najdete vaši laskavou referenci.

Viz také