Práce s textem v tabulce
Jak již bylo zmíněno v předchozích článcích, tabulka obvykle obsahuje prostý text, i když do buněk tabulky lze umístit jiný obsah, jako jsou obrázky nebo dokonce jiné tabulky.
Přidání textu nebo jiného obsahu do tabulky se provádí pomocí příslušných metod třídy DocumentBuilder a je popsáno v článku “Create a Table”. V tomto článku budeme hovořit o tom, jak pracovat s textem v již existující tabulce.
Nahrazení textu v tabulce
Tabulka, stejně jako jakýkoli jiný uzel v Aspose.Words, má přístup k objektu Range. Pomocí objektu rozsah tabulky můžete nahradit text v tabulce.
V současné době je podporována možnost používat speciální znaky při nahrazování, takže je možné nahradit existující text textem s více odstavci. Chcete-li to provést, musíte použít speciální metaznaky popsané v odpovídající metodě Replace.
Následující příklad kódu ukazuje, jak nahradit všechny instance řetězce textu v buňkách celé tabulky:
// 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"); |
Extrahujte prostý Text z tabulky nebo buňky
Pomocí objektu Range můžete také volat metody v celém rozsahu tabulky a extrahovat tabulku jako prostý text. Chcete-li to provést, použijte vlastnost Text.
Následující příklad kódu ukazuje, jak vytisknout rozsah textu tabulky:
// 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; |
Stejná technika se používá pouze k extrakci obsahu z jednotlivých buněk tabulky.
Následující příklad kódu ukazuje, jak vytisknout textový rozsah prvků řádků a tabulek:
// 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; |
Práce s alternativním textem tabulky
Microsoft Word tabulky mají table title
a table description
, které poskytují alternativní textovou reprezentaci informací obsažených v tabulce.
V Aspose.Words můžete také přidat název a popis tabulky pomocí vlastností Title a Description. Tyto vlastnosti mají význam pro DOCX dokumenty odpovídající ISO / IEC 29500. Při ukládání ve formátech starších než ISO/IEC 29500 jsou tyto vlastnosti ignorovány.
Následující příklad kódu ukazuje, jak nastavit vlastnosti názvu a popisu tabulky:
// 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); |