Робота з текстом в таблиці
Як згадувалося в попередніх статтях, таблиця зазвичай містить звичайний текст, хоча в клітинки таблиці може бути розміщений інший вміст, наприклад зображення або навіть інші таблиці.
Додавання тексту або іншого вмісту в таблицю здійснюється за допомогою відповідних методів класу DocumentBuilder і описано в статті “Create a Table”. У цій статті ми поговоримо про те, як працювати з текстом у вже існуючій таблиці.
Замінити текст у таблиці
Таблиця, як і будь-який інший вузол у Aspose.Words, має доступ до об’єкта Range. Використовуючи об’єкт table range, ви можете замінити текст у таблиці.
В даний час підтримується можливість використання спеціальних символів при заміні, тому можна замінити існуючий текст текстом, що складається з декількох абзаців. Для цього вам потрібно використовувати спеціальні метасимволи, описані у відповідному методі Replace.
Наступний приклад коду показує, як замінити всі екземпляри текстового рядка в клітинках усієї таблиці:
// 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"); |
Витяг звичайного тексту з таблиці або комірки
Використовуючи об’єкт Range, ви також можете викликати методи для всього діапазону таблиць і витягувати таблицю як звичайний текст. Для цього використовуйте властивість Text.
Наступний приклад коду показує, як надрукувати текстовий діапазон таблиці:
// 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; |
Той самий метод використовується лише для вилучення вмісту з окремих комірок таблиці.
У наступному прикладі коду показано, як надрукувати текстовий діапазон елементів рядків і таблиць:
// 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; |
Робота з альтернативним текстом таблиці
Microsoft Word таблиці мають значення table title
та table description
, які забезпечують альтернативне текстове представлення інформації, що міститься в таблиці.
У Aspose.Words ви також можете додати заголовок та опис таблиці, використовуючи властивості Title та Description. Ці властивості мають значення для DOCX документів, що відповідають ISO/IEC 29500. При збереженні в форматах більш ранніх, ніж ISO/IEC 29500, ці властивості ігноруються.
У наступному прикладі коду показано, як задати властивості заголовка і опису таблиці:
// 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); |