Tabele są pomocne w organizowaniu informacji i rysunków. Często wstawiamy tabele w dokumentach Word (DOCX/DOC), aby pokazać informacje. W edytorze tekstu możesz łatwo tworzyć tabele przy użyciu języka C++. Możesz zapoznać się z poniższymi przykładami, aby dowiedzieć się, jak pracować z tabelami w dokumentach programu Word:

Przejdźmy do szczegółowego zbadania wszystkich tych tematów:

Wstaw tabele w interfejsie API dokumentów programu Word

Po pierwsze, pamiętaj, że będziesz używać API Aspose.Words for C++ do wstawiania tabel w dokumencie Word. Możesz skonfigurować API, pobierając je z New Releases lub poprzez galerię NuGet. Po prawidłowym skonfigurowaniu można po prostu wykorzystać metody, właściwości i klasy udostępniane przez interfejs API, aby można było użyć kilku prostych wywołań interfejsu API do tworzenia, edytowania lub manipulowania dokumentami programu Microsoft Word, takimi jak pliki DOCX lub DOC.

Wstaw tabelę w dokumentach programu Word przy użyciu języka C++

Możesz wstawić tabelę do dokumentów Word, wykonując kilka prostych czynności. Należy jednak zauważyć, że należy przekazać obiekt document do konstruktora każdego węzła, aby wszystkie węzły potomne należały do tego samego obiektu. Musisz wykonać czynności wymienione poniżej:

  1. Zainicjuj obiekt klasy Document.
  2. Utwórz obiekt Tabela.
  3. Dodaj tabelę do dokumentu
  4. Utwórz wiersze i kolumny
  5. Zastosuj Autodopasowanie do komórek tabeli
  6. Zapisz wyjściowy dokument programu Word

Poniższy fragment kodu pokazuje, jak wstawić tabelę do dokumentu programu Word (DOCX/DOC) przy użyciu języka C++:

// Ścieżka do katalogu dokumentów.
System::String outputDataDir = dataDir;
System::SharedPtr<Document> doc = System::MakeObject<Document>();

// Zaczynamy od utworzenia obiektu tabeli. Zwróć uwagę, jak musimy przekazać obiekt document
// Do konstruktora każdego węzła. Dzieje się tak, ponieważ każdy tworzony przez nas węzeł musi należeć
// Do jakiegoś dokumentu.
System::SharedPtr<Table> table = System::MakeObject<Table>(doc);

// Dodaj tabelę do dokumentu.
doc->get_FirstSection()->get_Body()->AppendChild(table);

// W tym miejscu moglibyśmy wywołać funkcję SureMinimum, aby utworzyć dla nas wiersze i komórki. Ta metoda jest używana
// Aby upewnić się, że określony węzeł jest prawidłowy, w takim przypadku poprawna tabela powinna zawierać co najmniej jeden
// Wiersz i jedna komórka, dlatego ta metoda tworzy je za nas.
// Zamiast tego sami zajmiemy się tworzeniem wiersza i tabeli. To byłby najlepszy sposób na zrobienie tego
// Gdybyśmy na przykład tworzyli tabelę wewnątrz algorytmu.
System::SharedPtr<Row> row = System::MakeObject<Row>(doc);
row->get_RowFormat()->set_AllowBreakAcrossPages(true);
table->AppendChild(row);

// Możemy teraz zastosować dowolne ustawienia automatycznego dopasowania.
table->AutoFit(AutoFitBehavior::FixedColumnWidths);

// Utwórz komórkę i dodaj ją do wiersza
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);

// Dodaj akapit do komórki, a także nowy przebieg z tekstem.
cell->AppendChild(System::MakeObject<Paragraph>(doc));
cell->get_FirstParagraph()->AppendChild(System::MakeObject<Run>(doc, u"Row 1, Cell 1 Text"));

// Dodaj komórkę do wiersza.
row->AppendChild(cell);

// Następnie powtórzylibyśmy ten proces dla innych komórek i wierszy w tabeli.
// Możemy również przyspieszyć działanie, klonując istniejące komórki i wiersze.
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";

// Zapisz dokument na dysku.
doc->Save(outputPath);

Wstaw tabelę z HTML do dokumentów programu Word przy użyciu C++

Możliwe, że plik HTML zawiera tabelę, którą należy wstawić do dokumentów tekstowych, takich jak DOCX, DOC itp. Lub może być konieczne skopiowanie tabeli ze strony internetowej. Zamiast więc tworzyć i projektować tabelę od zera, możesz z łatwością analizować znaczniki HTML jako tabelę w dokumencie Word. Na przykład możesz dodać tabelę do dokumentu programu Word, używając następującego ciągu 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>

Zachowaliśmy prostotę treści, aby można było zademonstrować obsługę znacznika tabeli w podstawowym, ale ważnym przypadku użycia. Ponadto należy zauważyć, że autodopasowanie nie może być stosowane w tabelach utworzonych na podstawie kodu HTML.

Wykonajmy poniższe kroki, aby wstawić tabelę HTML do dokumentu programu Word:

  1. Zainicjuj instancję klasy Document.
  2. Przekaż znaczniki HTML za pomocą metody InsertHtml.
  3. Zapisz wyjściowy plik słowny DOCX

Poniższy kod wykonuje następujące kroki i pokazuje, jak utworzyć tabelę w dokumencie Word z HTML przy użyciu C++:

// Ścieżka do katalogu dokumentów.
System::String outputDataDir = dataDir;
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);

// Wstaw tabelę z HTML. Należy pamiętać, że AutoFitSettings nie ma zastosowania do tabel
// Wstawione 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";
// Zapisz dokument na dysku.
doc->Save(outputPath);

Możesz zauważyć, że ta metoda jest nieco prostsza niż podejście, które omówiliśmy powyżej. Powodem jest to, że nie musisz dodawać każdego węzła jeden po drugim dla wierszy, kolumn lub komórek, ponieważ tag Table w ciągu HTML zawiera wszystkie informacje. Poniżej znajduje się zrzut ekranu tej prostej tabeli HTML dodanej do dokumentu programu Word:

Wstaw tabelę w Wordzie

Wstaw tabelę za pomocą Konstruktora dokumentów w C++

Najlepszą rzeczą w Aspose.Words for C++ API jest to, że oferuje różnorodne funkcje, które stają się przewagą konkurencyjną dla API i wyróżniają je spośród innych opcji. Podobnie funkcja wstawiania tabeli za pomocą narzędzia do tworzenia dokumentów jest kolejnym podejściem do dodawania tabel w dokumentach Word (DOC/DOCX). Przyjrzyjmy się zatem szczegółom z trzech różnych perspektyw:

1) Wstaw prostą tabelę w DOCX za pomocą Document Builder używając C++

Aby dodać prostą tabelę w dokumencie Word za pomocą Konstruktora dokumentów, wykonaj następujące czynności:

  1. Utwórz Document Obiekt
  2. Wywołaj metodę StartTable() i wstaw komórki
  3. Dodaj wiersz i komórki
  4. Zapisz wyjściowy plik DOCX

Ponadto poniższy fragment kodu pokazuje, jak wstawić prostą tabelę do pliku DOCX za pomocą C++:

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

// Wywołujemy tę metodę, aby rozpocząć budowanie tabeli.
builder->StartTable();
builder->InsertCell();
builder->Write(u"Row 1, Cell 1 Content.");

// Zbuduj drugą komórkę
builder->InsertCell();
builder->Write(u"Row 1, Cell 2 Content.");

// Wywołaj następującą metodę, aby zakończyć wiersz i rozpocząć nowy wiersz.
builder->EndRow();

// Zbuduj pierwszą komórkę drugiego rzędu.
builder->InsertCell();
builder->Write(u"Row 2, Cell 1 Content");

// Zbuduj drugą komórkę.
builder->InsertCell();
builder->Write(u"Row 2, Cell 2 Content.");
builder->EndRow();

// Sygnał, że zakończyliśmy budowę stołu.
builder->EndTable();
System::String outputPath = outputDataDir + u"InsertTableUsingDocumentBuilder.SimpleTable.doc";

// Zapisz dokument na dysku.
doc->Save(outputPath);

2) Wstaw sformatowaną tabelę w DOCX za pomocą Konstruktora dokumentów, używając C++

Możesz wstawić sformatowaną tabelę do dokumentu Word, wykonując poniższe czynności:

  1. Zainicjuj instancję klasy Document.
  2. Utwórz wiersz nagłówka
  3. Ustaw wcięcia i funkcje formatowania
  4. Zresetuj formatowanie czcionki
  5. Zapisz wyjściowy plik Word DOCX

Poniższy fragment kodu tworzy sformatowaną tabelę w pliku DOCX przy użyciu C++:

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

// Utwórz wiersz nagłówka.
builder->InsertCell();

// Ustaw lewe wcięcie dla tabeli. Formatowanie całej tabeli należy zastosować później
// W tabeli znajduje się co najmniej jeden wiersz.
table->set_LeftIndent(20.0);

// Ustaw wysokość i zdefiniuj regułę wysokości dla wiersza nagłówka.
builder->get_RowFormat()->set_Height(40.0);
builder->get_RowFormat()->set_HeightRule(HeightRule::AtLeast);

// Niektóre funkcje specjalne dla wiersza nagłówka.
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");

// Nie musimy określać szerokości tej komórki, ponieważ jest ona dziedziczona z poprzedniej komórki.
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();

// Ustaw funkcje dla innych wierszy i komórek.
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);

// Zresetuj wysokość i zdefiniuj inną regułę wysokości dla treści tabeli
builder->get_RowFormat()->set_Height(30.0);
builder->get_RowFormat()->set_HeightRule(HeightRule::Auto);
builder->InsertCell();

// Zresetuj formatowanie czcionki.
builder->get_Font()->set_Size(12);
builder->get_Font()->set_Bold(false);

// Zbuduj inne komórki.
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";

// Zapisz dokument na dysku.
doc->Save(outputPath);

3) Wstaw zagnieżdżoną tabelę w DOCX za pomocą Document Builder przy użyciu C++

Czasami potrzebujemy kolejnej tabeli wewnątrz istniejącej tabeli. Na przykład komórka w jakimś wierszu lub kolumnie tabeli może zawierać podtabelę dla podkategorii lub innego pola. W takich sytuacjach pomocne są zagnieżdżone tabele, które można dodać, wykonując poniższe czynności:

  1. Zbuduj zewnętrzną Table, a następnie wywołaj metodę EndTable.
  2. Zbuduj wewnętrzną tabelę wewnątrz komórki tabeli zewnętrznej
  3. Zapisz wyjściowy dokument tekstowy

Poniższy fragment kodu pokazuje, jak wstawić zagnieżdżoną tabelę w dokumencie programu Word przy użyciu języka C++:

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

// Zbuduj stół zewnętrzny.
System::SharedPtr<Cell> cell = builder->InsertCell();
builder->Writeln(u"Outer Table Cell 1");
builder->InsertCell();
builder->Writeln(u"Outer Table Cell 2");

// To wywołanie jest ważne, aby utworzyć zagnieżdżoną tabelę w pierwszej tabeli
// Bez tego wywołania komórki wstawione poniżej zostaną dołączone do tabeli zewnętrznej.
builder->EndTable();

// Przejdź do pierwszej komórki tabeli zewnętrznej.
builder->MoveTo(cell->get_FirstParagraph());

// Zbuduj wewnętrzny stół.
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";

// Zapisz dokument na dysku.
doc->Save(outputPath);

Wniosek

Podsumowując, nauczyliśmy się wstawiać różne tabele w dokumentach Word przy użyciu różnych metod. Do dokumentów tekstowych (DOC/DOCX) można wstawić prostą tabelę lub ciąg znaków HTML, a także sformatowane i zagnieżdżone tabele. Jednak w przypadku jakichkolwiek niejasności lub pytań możesz skontaktować się z nami na Bezpłatne fora wsparcia. Ponadto możesz również zapoznać się z Referencjami API i Dokumentacją produktu, aby uzyskać informacje zwrotne.

Zobacz też