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

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

Добавление текста или другого содержимого в таблицу осуществляется с помощью соответствующих методов класса 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-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Tables.docx")
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()
table.range.replace("Carrots", "Eggs", aw.replacing.FindReplaceOptions(aw.replacing.FindReplaceDirection.FORWARD))
table.last_row.last_cell.range.replace("50", "20", aw.replacing.FindReplaceOptions(aw.replacing.FindReplaceDirection.FORWARD))
doc.save(ARTIFACTS_DIR + "FindAndReplace.replace_text_in_table.docx")
view raw replace-text.py hosted with ❤ by GitHub

Извлечение обычного текста из таблицы или ячейки

Используя объект Range, вы также можете вызывать методы для всего диапазона таблиц и извлекать таблицу в виде обычного текста. Для этого используйте свойство Text.

В следующем примере кода показано, как напечатать текстовый диапазон таблицы:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Tables.docx")
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()
# 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.
print("Contents of the table: ")
print(table.range.text)
view raw extract-text.py hosted with ❤ by GitHub

Тот же метод используется только для извлечения содержимого из отдельных ячеек таблицы.

В следующем примере кода показано, как напечатать текстовый диапазон элементов строк и таблиц:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
print("\nContents of the row: ")
print(table.rows[1].range.text)
print("\nContents of the cell: ")
print(table.last_row.last_cell.range.text)

Работа с альтернативным текстом таблицы

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-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Tables.docx")
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()
table.title = "Test title"
table.description = "Test description"
options = aw.saving.OoxmlSaveOptions()
options.compliance = aw.saving.OoxmlCompliance.ISO29500_2008_STRICT
doc.compatibility_options.optimize_for(aw.settings.MsWordVersion.WORD2016)
doc.save(ARTIFACTS_DIR + "WorkingWithTableStylesAndFormatting.table_title_and_description.docx", options)