Применить форматирование
К каждому элементу таблицы можно применить различное форматирование. Например, форматирование таблицы будет применено ко всей таблице, форматирование строк - только к определенным строкам, форматирование ячеек - только к определенным ячейкам.
Aspose.Words предоставляет расширенные возможности API для извлечения и применения форматирования к таблице. Вы можете использовать узлы Table, RowFormat и CellFormat для настройки форматирования.
В этой статье мы поговорим о том, как применить форматирование к различным узлам таблицы и какие настройки форматирования таблицы поддерживает Aspose.Words.
Применить форматирование к различным узлам
В этом разделе мы рассмотрим применение форматирования к различным узлам таблицы.
Форматирование на уровне таблицы
Чтобы применить форматирование к таблице, вы можете использовать свойства, доступные на соответствующем узле Table, используя классы Table, PreferredWidth и TableCollection.
На рисунках ниже показано представление функций форматирования Table в Microsoft Word и соответствующих им свойств в Aspose.Words.
В следующем примере кода показано, как применить контурную границу к таблице:
В следующем примере кода показано, как создать таблицу с включенными всеми границами (grid):
Форматирование на уровне строк
Уровень строки
На рисунках ниже показано представление функций форматирования Row в Microsoft Word и соответствующих им свойств в Aspose.Words.
В следующем примере кода показано, как изменить форматирование строк таблицы:
Форматирование на уровне ячеек
Форматирование на уровне ячеек контролируется классами Cell, CellFormat и CellCollection.
Обратите внимание, что Cell может быть только дочерним узлом Row. В то же время в Cell должен быть хотя бы один Paragraph, чтобы к нему можно было применить форматирование.
В дополнение к Paragraph вы также можете вставить Table в Cell.
На рисунках ниже показано представление функций форматирования Cell в Microsoft Word и соответствующих им свойств в Aspose.Words.
В следующем примере кода показано, как изменить форматирование ячейки таблицы:
В следующем примере кода показано, как задать количество пробелов (в пунктах), добавляемых к левому/верхнему/правому/нижнему краю содержимого ячейки:
Укажите высоту строк
Самый простой способ задать высоту строки - использовать параметр DocumentBuilder. Используя соответствующие свойства RowFormat, вы можете установить значение высоты по умолчанию или применить различную высоту для каждой строки в таблице.
В Aspose.Words высота строки таблицы регулируется с помощью:
- свойство высоты строки – Height
- свойство правила высоты для данной строки – HeightRule
В то же время для каждой строки можно задать разную высоту – это позволяет вам широко управлять настройками таблицы.
В следующем примере кода показано, как создать таблицу, содержащую одну ячейку, и применить форматирование строк:
Указание ширины таблицы и ячеек
Таблица в документе Microsoft Word предоставляет несколько различных способов изменения размера таблицы и отдельных ячеек. Эти свойства позволяют в значительной степени контролировать внешний вид и поведение таблицы, так что Aspose.Words поддерживает поведение таблиц, как в Microsoft Word.
Важно знать, что элементы таблицы обладают несколькими различными свойствами, которые могут влиять на то, как рассчитывается ширина всей таблицы, а также отдельных ячеек:
- Предпочтительная ширина таблицы
- Предпочтительная ширина отдельных ячеек
- Включение автоматической подгонки по таблице
В этой статье подробно описывается, как работают различные свойства вычисления ширины таблицы и как получить полный контроль над вычислением ширины таблицы. Это особенно полезно знать это в тех случаях, когда макет таблицы отображается не так, как ожидалось.
В большинстве случаев рекомендуется использовать предпочтительную ячейку, а не ширину таблицы. Предпочтительная ширина ячейки в большей степени соответствует спецификации формата DOCX, а также модели Aspose.Words.
Ширина ячейки на самом деле является расчетным значением для формата DOCX. Фактическая ширина ячейки может зависеть от многих факторов. Например, изменение полей страницы или предпочтительной ширины таблицы может повлиять на фактическую ширину ячейки.
Предпочтительная ширина ячейки - это свойство ячейки, которое хранится в документе. Оно ни от чего не зависит и не меняется при изменении таблицы или других свойств ячейки.
Как использовать предпочтительную ширину
Желаемая ширина таблицы или отдельных ячеек определяется с помощью свойства preferred width, которое представляет собой размер, который должен соответствовать элементу. То есть предпочтительная ширина может быть указана как для всей таблицы, так и для отдельных ячеек. В некоторых ситуациях может оказаться невозможным точно установить эту ширину, но в большинстве случаев фактическая ширина будет близка к этому значению.
Соответствующий предпочтительный тип и значение ширины устанавливаются с помощью методов класса PreferredWidth:
- метод Auto для указания автоматической ширины или “без предпочтительной ширины”
- метод FromPercent для указания ширины в процентах
- метод FromPoints для указания ширины в точках
На рисунках ниже показано представление preferred width setting features в Microsoft Word и их соответствующих свойств в Aspose.Words.
Пример того, как эти параметры применяются к реальной таблице в документе, можно увидеть на рисунке ниже.
Укажите предпочтительную ширину таблицы или ячейки
В Aspose.Words ширина таблицы и ячеек задается с помощью свойств Table.PreferredWidth и CellFormat.PreferredWidth, а параметры доступны в перечислении PreferredWidthType:
- Auto, что эквивалентно отсутствию предпочтительной установленной ширины
- Percent, который соответствует размеру элемента относительно доступного пространства в окне или контейнера и пересчитывает значение при изменении доступной ширины
- Points, который соответствует элементу заданной ширины в точках
Использование свойства Table.PreferredWidth позволяет настроить ее предпочтительную ширину относительно контейнера: страницы, текстового столбца или ячейки внешней таблицы, если это вложенная таблица.
В следующем примере кода показано, как настроить автоматическое соответствие таблицы 50% ширины страницы:
Использование свойства CellFormat.PreferredWidth для данной ячейки позволит настроить ее предпочтительную ширину.
В следующем примере кода показано, как установить различные предпочтительные параметры ширины:
Поиск предпочтительного типа и значения ширины
Вы можете использовать свойства Type и Value, чтобы найти предпочтительную ширину нужной таблицы или ячейки.
В следующем примере кода показано, как получить предпочтительный тип ширины ячейки таблицы:
Как настроить автозапуск
Свойство AllowAutoFit позволяет ячейкам таблицы увеличиваться и уменьшаться в размере в соответствии с выбранным критерием. Например, вы можете использовать параметр AutoFit to Window, чтобы таблица соответствовала ширине страницы, а параметр AutoFit to Content - чтобы разрешить каждой ячейке увеличиваться или уменьшаться в размере в соответствии с ее содержимым.
По умолчанию Aspose.Words вставляет новую таблицу, используя AutoFit to Window. Размер таблицы будет соответствовать доступной ширине страницы. Чтобы изменить размер таблицы, вы можете вызвать метод AutoFit. Этот метод принимает перечисление AutoFitBehavior, которое указывает, какой тип автозаполнения применяется к таблице.
Важно знать, что метод автозаполнения на самом деле представляет собой ярлык, который одновременно применяет различные свойства к таблице. Это свойства, которые фактически обеспечивают наблюдаемое поведение таблицы. Мы обсудим эти свойства для каждого параметра автозаполнения.
В следующем примере кода показано, как настроить таблицу на сжатие или увеличение каждой ячейки в соответствии с ее содержимым:
AutoFit От таблицы к окну
Когда к таблице применяется автоматическая подгонка под окно, фактически за кулисами выполняются следующие операции:
- Свойство Table.AllowAutoFit позволяет автоматически изменять размер столбцов в соответствии с доступным содержимым, используя значение Table.PreferredWidth, равное 100%
- CellFormat.PreferredWidth удаляется из всех ячеек таблицы
Обратите внимание, что это немного отличается от поведения Microsoft Word, когда для предпочтительной ширины каждой ячейки устанавливаются соответствующие значения в зависимости от их текущего размера и содержимого. Aspose.Words не обновляет предпочтительную ширину, поэтому вместо этого они просто очищаются.
- Ширина столбцов пересчитывается с учетом текущего содержимого таблицы – конечным результатом является таблица, занимающая всю доступную ширину
- Ширина столбцов в таблице изменяется автоматически по мере того, как пользователь редактирует текст
В следующем примере кода показано, как автоматически подогнать таблицу под ширину страницы:
AutoFit Таблица с содержимым
Когда в таблицу автоматически добавляется содержимое, следующие шаги фактически выполняются за кулисами:
-
Свойство Table.AllowAutoFit позволяет автоматически изменять размер каждой ячейки в соответствии с ее содержимым
-
Предпочтительная ширина таблицы удаляется из Table.PreferredWidth, CellFormat.PreferredWidth удаляется для каждой ячейки таблицы
Обратите внимание, что этот параметр автоматической подгонки удаляет предпочтительную ширину из ячеек, как и в Microsoft Word. Если вы хотите сохранить размеры столбцов и увеличить или уменьшить их в соответствии с содержимым, вам следует установить для свойства Table.AllowAutoFit значение True само по себе, а не использовать ярлык автоматической подгонки. -
Ширина столбцов пересчитывается для текущего содержимого таблицы – конечным результатом является таблица, в которой ширина столбцов и ширина всей таблицы автоматически изменяются, чтобы наилучшим образом соответствовать содержимому, когда пользователь редактирует текст
В следующем примере кода показано, как автоматически подогнать таблицу к ее содержимому:
Отключите AutoFit в таблице и используйте фиксированную ширину столбцов
Если в таблице отключена автоматическая подгонка и вместо нее используется фиксированная ширина столбцов, выполняются следующие действия:
- Table.AllowAutoFit свойство отключено, поэтому столбцы не увеличиваются и не сжимаются до их содержимого
- Предпочтительная ширина всей таблицы удаляется из Table.PreferredWidth, CellFormat.PreferredWidth удаляется из всех ячеек таблицы
- Конечным результатом является таблица, ширина столбцов которой определяется свойством CellFormat.Width и размер столбцов которой не изменяется автоматически при вводе пользователем текста или при изменении размера страницы
В следующем примере кода показано, как отключить автозаполнение и включить фиксированную ширину для указанной таблицы:
Порядок приоритета при вычислении ширины ячейки
Aspose.Words позволяет пользователям определять ширину таблицы или ячейки с помощью нескольких объектов, включая CellFormat – его свойство Width в основном осталось от предыдущих версий, однако оно по-прежнему полезно для упрощения настройки ширины ячейки.
Важно знать, что свойство CellFormat.Width работает по-разному в зависимости от того, какие из других свойств ширины уже существуют в таблице.
Aspose.Words для вычисления ширины ячеек используется следующий порядок:
Заказ | Собственность | Описание |
---|---|---|
AllowAutoFit определяется | Если параметр AutoFit включен: - размер таблицы может превышать желаемую ширину для размещения содержимого – обычно он не уменьшается ниже желаемой ширины - любое изменение значения CellFormat.Width игнорируется, и вместо этого ячейка будет соответствовать своему содержимому |
|
PreferredWidthType со значением Points или Percent | CellFormat.Width игнорируется | |
PreferredWidthType со значением Auto | Значение из CellFormat.Width копируется и становится предпочтительной шириной ячейки (в пунктах) |
Разрешить Интервал Между Ячейками
Вы можете задать любое дополнительное расстояние между ячейками таблицы, аналогичное параметру “Расстояние между ячейками” в Microsoft Word. Это можно сделать с помощью свойства AllowCellSpacing.
Пример того, как эти параметры применяются к реальной таблице в документе, можно увидеть на рисунке ниже.
В следующем примере кода показано, как задать интервал между ячейками:
Нанесение границ и растушевки
Границы и штриховка могут быть применены либо ко всей таблице с помощью Table.SetBorder, Table.SetBorders и Table.SetShading, либо только к определенным ячейкам с помощью CellFormat.Borders и CellFormat.Shading. Кроме того, границы строк можно задать с помощью RowFormat.Borders, однако штриховка не может быть применена таким образом.
На рисунках ниже показаны настройки границ и теней в Microsoft Word и соответствующие им свойства в Aspose.Words.
В следующем примере кода показано, как отформатировать таблицу и ячейку с различными границами и оттенками: