---
title: "Работа со столбцами и строками в C++"
---

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

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

Управление столбцами, строками и ячейками осуществляется путем обращения к выбранному узлу документа по его индексу. Поиск индекса любого узла включает в себя сбор всех дочерних узлов типа element из родительского узла, а затем использование метода [IndexOf](https://reference.aspose.com/words/cpp/aspose.words/nodecollection/indexof/) для поиска индекса нужного узла в коллекции.

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

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

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

{{< gist "aspose-words-gists" "08b4741d451b8f6519bcb0b916f18bb8" "retrieve-table-index.h" >}}

### Найдите индекс строки в таблице {#find-the-index-of-a-row-in-a-table}

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

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

{{< gist "aspose-words-gists" "08b4741d451b8f6519bcb0b916f18bb8" "retrieve-row-index.h" >}}

### Найдите индекс ячейки в строке {#find-the-index-of-a-cell-in-a-row}

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

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

{{< gist "aspose-words-gists" "08b4741d451b8f6519bcb0b916f18bb8" "retrieve-cell-index.h" >}}

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

В объектной модели документа Aspose.Words (DOM) узел [Table](https://reference.aspose.com/words/cpp/aspose.words.tables/table/) состоит из [Row](https://reference.aspose.com/words/cpp/aspose.words.tables/row/) узлов, а затем из [Cell](https://reference.aspose.com/words/cpp/aspose.words.tables/cell/) узлов. Таким образом, в объектной модели документа Aspose.Words, как и в документах Word, отсутствует понятие столбца.

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

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

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

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

{{< gist "aspose-words-gists" "08b4741d451b8f6519bcb0b916f18bb8" "column-class.h" >}}

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

{{< gist "aspose-words-gists" "08b4741d451b8f6519bcb0b916f18bb8" "insert-blank-column.h" >}}

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

{{< gist "aspose-words-gists" "08b4741d451b8f6519bcb0b916f18bb8" "remove-column.h" >}}

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

Вы можете выбрать повторение первой строки таблицы в качестве строки заголовка только на первой странице или на каждой странице, если таблица разделена на несколько частей. В Aspose.Words вы можете повторять строку заголовка на каждой странице, используя свойство [HeadingFormat](https://reference.aspose.com/words/cpp/aspose.words.tables/rowformat/get_headingformat/).

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

```

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

```

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

{{< gist "aspose-words-gists" "08b4741d451b8f6519bcb0b916f18bb8" "repeat-rows-on-subsequent-pages.h" >}}

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

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

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

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

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

### Следите за тем, чтобы строка не разбивалась на страницы {#keep-a-row-from-breaking-across-pages}

Это включает в себя ограничение разбиения содержимого внутри ячеек строки на страницы. В Microsoft Word это можно найти в разделе "Свойства таблицы" в качестве опции "Разрешить разбиение строки на страницы". В Aspose.Words это находится в [RowFormat](hhttps://reference.aspose.com/words/cpp/aspose.words.tables/rowformat/) объекте [Row](https://reference.aspose.com/words/cpp/aspose.words.tables/row/) как свойство [RowFormat.AllowBreakAcrossPages](https://reference.aspose.com/words/cpp/aspose.words.tables/rowformat/get_allowbreakacrosspages/).

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

{{< gist "aspose-words-gists" "08b4741d451b8f6519bcb0b916f18bb8" "row-format-disable-break-across-pages.h" >}}

### Следите за тем, чтобы таблица не разбивалась на страницы {#keep-a-table-from-breaking-across-pages}

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

Для этого в Aspose.Words используется метод, который позволяет пользователям выбирать таблицу и устанавливать для параметра [KeepWithNext](https://reference.aspose.com/words/cpp/aspose.words/paragraphformat/get_keepwithnext/) значение true для каждого абзаца в ячейках таблицы. Исключением является последний абзац в таблице, для которого должно быть установлено значение false.

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

{{< gist "aspose-words-gists" "08b4741d451b8f6519bcb0b916f18bb8" "keep-table-together.h" >}}
