Praca z tekstem w tabeli
Jak wspomniano w poprzednich artykułach, tabela zwykle zawiera zwykły tekst, chociaż inne treści, takie jak obrazy, a nawet inne tabele, można umieścić w komórkach tabeli.
Dodawanie tekstu lub innej treści do tabeli odbywa się przy użyciu odpowiednich metod klasy DocumentBuilder i jest opisane w artykule “Create a Table”. W tym artykule porozmawiamy o tym, jak pracować z tekstem w już istniejącej tabeli.
Zamień tekst w tabeli
Tabela, jak każdy inny węzeł w Aspose.Words, ma dostęp do obiektu Range. Za pomocą obiektu zakres tabeli można zastąpić tekst w tabeli.
Obecnie obsługiwana jest możliwość używania znaków specjalnych podczas zastępowania, dzięki czemu możliwe jest zastąpienie istniejącego tekstu tekstem wielopunktowym. Aby to zrobić, musisz użyć specjalnych metaznaków opisanych w odpowiedniej metodzie Replace.
Poniższy przykład kodu pokazuje, jak zastąpić wszystkie wystąpienia ciągu tekstu w komórkach całej tabeli:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git. | |
auto doc = MakeObject<Document>(MyDir + u"Tables.docx"); | |
auto table = System::ExplicitCast<Table>(doc->GetChild(NodeType::Table, 0, true)); | |
table->get_Range()->Replace(u"Carrots", u"Eggs", MakeObject<FindReplaceOptions>(FindReplaceDirection::Forward)); | |
table->get_LastRow()->get_LastCell()->get_Range()->Replace(u"50", u"20", MakeObject<FindReplaceOptions>(FindReplaceDirection::Forward)); | |
doc->Save(ArtifactsDir + u"FindAndReplace.ReplaceTextInTable.docx"); |
Wyodrębnij zwykły tekst z tabeli lub komórki
Za pomocą obiektu Range można również wywoływać metody w całym zakresie tabel i wyodrębniać tabelę jako zwykły tekst. Aby to zrobić, użyj właściwości Text.
Poniższy przykład kodu pokazuje, jak wydrukować zakres tekstu tabeli:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git. | |
auto doc = MakeObject<Document>(MyDir + u"Tables.docx"); | |
auto table = System::ExplicitCast<Table>(doc->GetChild(NodeType::Table, 0, true)); | |
// The range text will include control characters such as "\a" for a cell. | |
// You can call ToString and pass SaveFormat.Text on the desired node to find the plain text content. | |
std::cout << "Contents of the table: " << std::endl; | |
std::cout << table->get_Range()->get_Text() << std::endl; |
Ta sama technika jest stosowana do ekstrakcji zawartości tylko z pojedynczych komórek tabeli.
Poniższy przykład kodu pokazuje, jak wydrukować zakres tekstowy elementów wiersza i tabeli:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git. | |
std::cout << "\nContents of the row: " << std::endl; | |
std::cout << table->get_Rows()->idx_get(1)->get_Range()->get_Text() << std::endl; | |
std::cout << "\nContents of the cell: " << std::endl; | |
std::cout << table->get_LastRow()->get_LastCell()->get_Range()->get_Text() << std::endl; |
Praca z alternatywnym tekstem tabeli
Microsoft Word tabele mają table title
i table description
, które zapewniają alternatywną tekstową reprezentację informacji zawartych w tabeli.
W Aspose.Words Możesz również dodać tytuł i opis tabeli za pomocą właściwości Title i Description. Te właściwości mają znaczenie dla DOCX dokumentów zgodnych z ISO / IEC 29500. Podczas zapisywania w formatach wcześniejszych niż ISO / IEC 29500 te właściwości są ignorowane.
Poniższy przykład kodu pokazuje, jak ustawić właściwości tytułu i opisu tabeli:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git. | |
auto doc = MakeObject<Document>(MyDir + u"Tables.docx"); | |
auto table = System::ExplicitCast<Table>(doc->GetChild(NodeType::Table, 0, true)); | |
table->set_Title(u"Test title"); | |
table->set_Description(u"Test description"); | |
auto options = MakeObject<OoxmlSaveOptions>(); | |
options->set_Compliance(OoxmlCompliance::Iso29500_2008_Strict); | |
doc->get_CompatibilityOptions()->OptimizeFor(Settings::MsWordVersion::Word2016); | |
doc->Save(ArtifactsDir + u"WorkingWithTableStylesAndFormatting.TableTitleAndDescription.docx", options); |