Работа со столбцами и строками

Чтобы лучше контролировать работу таблиц, узнайте, как манипулировать столбцами и строками.

Найдите индекс элемента таблицы

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

Найдите индекс таблицы в документе

Иногда вам может потребоваться внести изменения в определенную таблицу в документе. Для этого вы можете обратиться к таблице по ее индексу.

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

Поиск индекса строки в таблице

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

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

Поиск индекса ячейки в строке

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

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

Работа с колонками

В объектной модели документа Aspose.Words (DOM) узел Table состоит из Row узлов, а затем из Cell узлов. Таким образом, в объектной модели документа Document из Aspose.Words, как и в документах Word, отсутствует понятие столбца.

По замыслу, строки таблицы в Microsoft Word и Aspose.Words полностью независимы, а основные свойства и операции содержатся только в строках и ячейках таблицы. Это дает таблицам возможность иметь некоторые интересные атрибуты:

  • Каждая строка таблицы может содержать совершенно разное количество ячеек
  • По вертикали ячейки каждой строки могут иметь разную ширину
  • Можно объединять таблицы с разными форматами строк и количеством ячеек

work-with-columns-aspose-words-java

Любые операции, выполняемые со столбцами, на самом деле являются “сокращениями”, которые выполняют операцию путем коллективного изменения ячеек строк таким образом, что это выглядит так, как будто они применяются к столбцам. То есть вы можете выполнять операции со столбцами, просто повторяя индекс одной и той же ячейки строки таблицы.

Следующий пример кода упрощает такие операции, демонстрируя класс facade, который собирает ячейки, составляющие “столбец” таблицы:

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

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

Укажите строки в качестве строк заголовка

Вы можете выбрать повторение первой строки таблицы в качестве строки заголовка только на первой странице или на каждой странице, если таблица разделена на несколько частей. В Aspose.Words вы можете повторять строку заголовка на каждой странице, используя свойство HeadingFormat.

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

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

Не допускайте разбивки таблиц и строк по страницам

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

Есть два отдельных метода, которые полезны для достижения этой функциональности:

  • Allow row break across pages, который применяется к строкам таблицы
  • Keep with next, который применяется к абзацам в ячейках таблицы

По умолчанию вышеуказанные свойства отключены.

keep-tables-and-rows-from-breaking-across-pages-aspose-words-java

Следите за тем, чтобы строка не разбивалась на страницы

Это предполагает ограничение разбиения содержимого внутри ячеек строки на страницы. В Microsoft Word это можно найти в свойствах таблицы как параметр “Разрешить разбиение строки на страницы”. В Aspose.Words это находится под объектом RowFormat из Row как свойство RowFormat.AllowBreakAcrossPages.

keep-rows-from-breaking-across-pages-aspose-words-java

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

Следите за тем, чтобы таблица не разбивалась на страницы

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

Для этого в Aspose.Words используется метод, который позволяет пользователям выбирать таблицу и устанавливать для параметра KeepWithNext значение true для каждого абзаца в ячейках таблицы. Исключением является последний абзац в таблице, для которого должно быть установлено значение false.

keep-tables-from-breaking-across-pages-aspose-words-java

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