Робота з текстом в таблиці

Як згадувалося в попередніх статтях, таблиця зазвичай містить звичайний текст, хоча в клітинки таблиці може бути розміщений інший вміст, наприклад зображення або навіть інші таблиці.

Додавання тексту або іншого вмісту в таблицю здійснюється за допомогою відповідних методів класу 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");
view raw replace-text.h hosted with ❤ by GitHub

Витяг звичайного тексту з таблиці або комірки

Використовуючи об’єкт 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;
view raw extract-text.h hosted with ❤ by GitHub

Той самий метод використовується лише для вилучення вмісту з окремих комірок таблиці.

У наступному прикладі коду показано, як надрукувати текстовий діапазон елементів рядків і таблиць:

// 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);