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

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

Добавление текста или другого содержимого в таблицу осуществляется с помощью соответствующих методов класса 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-Java.git.
Document doc = new Document(getMyDir() + "Tables.docx");
Table table = (Table)doc.getChild(NodeType.TABLE, 0, true);
table.getRange().replace("Carrots", "Eggs", new FindReplaceOptions(FindReplaceDirection.FORWARD));
table.getLastRow().getLastCell().getRange().replace("50", "20", new FindReplaceOptions(FindReplaceDirection.FORWARD));
doc.save(getArtifactsDir() + "FindAndReplace.ReplaceTextInTable.docx");

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

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

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

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document(getMyDir() + "Tables.docx");
Table table = (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.
System.out.println("Contents of the table: ");
System.out.println(table.getRange().getText());

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

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
System.out.println("\nContents of the row: ");
System.out.println(table.getRows().get(1).getRange().getText());
System.out.println("\nContents of the cell: ");
System.out.println(table.getLastRow().getLastCell().getRange().getText());

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

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-Java.git.
Document doc = new Document(getMyDir() + "Tables.docx");
Table table = (Table) doc.getChild(NodeType.TABLE, 0, true);
table.setTitle("Test title");
table.setDescription("Test description");
OoxmlSaveOptions options = new OoxmlSaveOptions(); { options.setCompliance(OoxmlCompliance.ISO_29500_2008_STRICT); }
doc.getCompatibilityOptions().optimizeFor(com.aspose.words.MsWordVersion.WORD_2016);
doc.save(getArtifactsDir() + "WorkingWithTableStylesAndFormatting.SetTableTitleAndDescription.docx", options);