Управление таблицей
Таблица в PowerPoint — это эффективный способ отображения и представления информации. Информация в сетке ячеек (расположенных в строках и столбцах) проста и понятна.
Aspose.Slides предоставляет класс Table, интерфейс ITable, класс Cell, интерфейс ICell и другие типы, позволяющие создавать, обновлять и управлять таблицами во всех видах презентаций.
Создание таблицы с нуля
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд через его индекс.
- Определите массив
columnWidth
. - Определите массив
rowHeight
. - Добавьте объект ITable на слайд с помощью метода
add_table(x, y, column_widths, row_heights)
. - Пройдите по каждой ICell, чтобы применить форматирование к верхней, нижней, правой и левой границам.
- Объедините первые две ячейки первой строки таблицы.
- Получите доступ к TextFrame ICell.
- Добавьте текст в TextFrame.
- Сохраните измененную презентацию.
Этот код на Python показывает, как создать таблицу в презентации:
import aspose.pydrawing as draw
import aspose.slides as slides
# Создает экземпляр класса Presentation, представляющий файл PPTX
with slides.Presentation() as pres:
# Получает доступ к первому слайду
sld = pres.slides[0]
# Определяет столбцы с ширинами и строки с высотами
dblCols = [50, 50, 50]
dblRows = [50, 30, 30, 30, 30]
# Добавляет форму таблицы на слайд
tbl = sld.shapes.add_table(100, 50, dblCols, dblRows)
# Устанавливает формат границ для каждой ячейки
for row in range(len(tbl.rows)):
for cell in range(len(tbl.rows[row])):
tbl.rows[row][cell].cell_format.border_top.fill_format.fill_type = slides.FillType.SOLID
tbl.rows[row][cell].cell_format.border_top.fill_format.solid_fill_color.color = draw.Color.red
tbl.rows[row][cell].cell_format.border_top.width = 5
tbl.rows[row][cell].cell_format.border_bottom.fill_format.fill_type = slides.FillType.SOLID
tbl.rows[row][cell].cell_format.border_bottom.fill_format.solid_fill_color.color= draw.Color.red
tbl.rows[row][cell].cell_format.border_bottom.width =5
tbl.rows[row][cell].cell_format.border_left.fill_format.fill_type = slides.FillType.SOLID
tbl.rows[row][cell].cell_format.border_left.fill_format.solid_fill_color.color =draw.Color.red
tbl.rows[row][cell].cell_format.border_left.width = 5
tbl.rows[row][cell].cell_format.border_right.fill_format.fill_type = slides.FillType.SOLID
tbl.rows[row][cell].cell_format.border_right.fill_format.solid_fill_color.color = draw.Color.red
tbl.rows[row][cell].cell_format.border_right.width = 5
# Объединяет ячейки 1 и 2 первой строки
tbl.merge_cells(tbl.rows[0][0], tbl.rows[1][1], False)
# Добавляет текст в объединенную ячейку
tbl.rows[0][0].text_frame.text = "Объединенные ячейки"
# Сохраняет презентацию на диске
pres.save("table.pptx", slides.export.SaveFormat.PPTX)
Нумерация в стандартной таблице
В стандартной таблице нумерация ячеек простая и начинается с нуля. Первая ячейка в таблице индексируется как 0,0 (столбец 0, строка 0).
Например, ячейки в таблице с 4 колонками и 4 строками нумеруются следующим образом:
(0, 0) | (1, 0) | (2, 0) | (3, 0) |
---|---|---|---|
(0, 1) | (1, 1) | (2, 1) | (3, 1) |
(0, 2) | (1, 2) | (2, 2) | (3, 2) |
(0, 3) | (1, 3) | (2, 3) | (3, 3) |
Этот код на Python показывает, как указать нумерацию для ячеек в таблице:
import aspose.pydrawing as draw
import aspose.slides as slides
# Создает экземпляр класса Presentation, представляющий файл PPTX
with slides.Presentation() as pres:
# Получает доступ к первому слайду
sld = pres.slides[0]
# Определяет столбцы с ширинами и строки с высотами
dblCols = [70, 70, 70, 70]
dblRows = [70, 70, 70, 70]
# Добавляет форму таблицы на слайд
tbl = sld.shapes.add_table(100, 50, dblCols, dblRows)
# Устанавливает формат границ для каждой ячейки
for row in tbl.rows:
for cell in row:
cell.cell_format.border_top.fill_format.fill_type = slides.FillType.SOLID
cell.cell_format.border_top.fill_format.solid_fill_color.color = draw.Color.red
cell.cell_format.border_top.width = 5
cell.cell_format.border_bottom.fill_format.fill_type = slides.FillType.SOLID
cell.cell_format.border_bottom.fill_format.solid_fill_color.color = draw.Color.red
cell.cell_format.border_bottom.width = 5
cell.cell_format.border_left.fill_format.fill_type = slides.FillType.SOLID
cell.cell_format.border_left.fill_format.solid_fill_color.color = draw.Color.red
cell.cell_format.border_left.width = 5
cell.cell_format.border_right.fill_format.fill_type = slides.FillType.SOLID
cell.cell_format.border_right.fill_format.solid_fill_color.color = draw.Color.red
cell.cell_format.border_right.width = 5
# Сохраняет презентацию на диск
pres.save("StandardTables_out.pptx", slides.export.SaveFormat.PPTX)
Доступ к существующей таблице
-
Создайте экземпляр класса Presentation.
-
Получите ссылку на слайд, содержащий таблицу, через его индекс.
-
Создайте объект ITable и установите его в null.
-
Пройдите по всем объектам IShape, пока не найдете таблицу.
Если вы подозреваете, что слайд, с которым вы работаете, содержит только одну таблицу, вы можете просто проверить все фигуры, которые он содержит. Когда фигура определяется как таблица, вы можете привести ее к объекту Table. Но если слайд, с которым вы работаете, содержит несколько таблиц, вы лучше поискать нужную таблицу по ее
alternative_text
. -
Используйте объект ITable для работы с таблицей. В примере ниже мы добавили новую строку в таблицу.
-
Сохраните измененную презентацию.
Этот код на Python показывает, как получить доступ и работать с существующей таблицей:
import aspose.pydrawing as draw
import aspose.slides as slides
# Создает экземпляр класса Presentation, представляющий файл PPTX
with slides.Presentation(path + "UpdateExistingTable.pptx") as pres:
# Получает доступ к первому слайду
sld = pres.slides[0]
# Инициализирует null TableEx
tbl = None
# Проходит по фигурам и устанавливает ссылку на найденную таблицу
for shp in sld.shapes:
if type(shp) is slides.Table:
tbl = shp
# Устанавливает текст для первой колонки второй строки
tbl.rows[0][1].text_frame.text = "Новый"
# Сохраняет измененную презентацию на диск
pres.save("table1_out.pptx", slides.export.SaveFormat.PPTX)
Выравнивание текста в таблице
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд через его индекс.
- Добавьте объект ITable на слайд.
- Получите доступ к объекту ITextFrame из таблицы.
- Получите доступ к IParagraph ITextFrame.
- Выравните текст по вертикали.
- Сохраните измененную презентацию.
Этот код на Python показывает, как выровнять текст в таблице:
import aspose.pydrawing as draw
import aspose.slides as slides
# Создает экземпляр класса Presentation
with slides.Presentation() as presentation:
# Получает первый слайд
slide = presentation.slides[0]
# Определяет столбцы с ширинами и строки с высотами
dblCols = [120, 120, 120, 120]
dblRows = [100, 100, 100, 100]
# Добавляет форму таблицы на слайд
tbl = slide.shapes.add_table(100, 50, dblCols, dblRows)
tbl.rows[1][0].text_frame.text = "10"
tbl.rows[2][0].text_frame.text = "20"
tbl.rows[3][0].text_frame.text = "30"
# Получает доступ к текстовому кадру
txtFrame = tbl.rows[0][0].text_frame
# Создает объект Paragraph для текстового кадра
paragraph = txtFrame.paragraphs[0]
# Создает объект Portion для абзаца
portion = paragraph.portions[0]
portion.text = "текст здесь"
portion.portion_format.fill_format.fill_type = slides.FillType.SOLID
portion.portion_format.fill_format.solid_fill_color.color = draw.Color.black
# Выравнивает текст по вертикали
cell = tbl.rows[0][0]
cell.text_anchor_type = slides.TextAnchorType.CENTER
cell.text_vertical_type = slides.TextVerticalType.VERTICAL270
# Сохраняет презентацию на диск
presentation.save("Vertical_Align_Text_out.pptx", slides.export.SaveFormat.PPTX)
Настройка форматирования текста на уровне таблицы
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд через его индекс.
- Получите доступ к объекту ITable со слайда.
- Установите
font_height
для текста. - Установите
alignment
иmargin_right
. - Установите
text_vertical_type
. - Сохраните измененную презентацию.
Этот код на Python показывает, как применить предпочтительные параметры форматирования к тексту в таблице:
import aspose.pydrawing as draw
import aspose.slides as slides
# Создает экземпляр класса Presentation
with slides.Presentation() as presentation:
someTable = presentation.slides[0].shapes.add_table(100, 100, [100, 50, 30], [30, 50, 30])
# Устанавливает высоту шрифта ячеек таблицы
portionFormat = slides.PortionFormat()
portionFormat.font_height = 25
someTable.set_text_format(portionFormat)
# Устанавливает выравнивание текста ячеек таблицы и правый отступ одним вызовом
paragraphFormat = slides.ParagraphFormat()
paragraphFormat.alignment = slides.TextAlignment.RIGHT
paragraphFormat.margin_right = 20
someTable.set_text_format(paragraphFormat)
# Устанавливает вертикальный тип текста для ячеек таблицы
textFrameFormat = slides.TextFrameFormat()
textFrameFormat.text_vertical_type = slides.TextVerticalType.VERTICAL
someTable.set_text_format(textFrameFormat)
presentation.save("result.pptx", slides.export.SaveFormat.PPTX)
Получение свойств стиля таблицы
Aspose.Slides позволяет вам извлекать стильовые свойства для таблицы, чтобы вы могли использовать эти данные для другой таблицы или где-то еще. Этот код на Python показывает, как получить стильовые свойства из предустановленного стиля таблицы:
import aspose.slides as slides
with slides.Presentation() as pres:
table = pres.slides[0].shapes.add_table(10, 10, [100, 150], [5, 5, 5])
table.style_preset = slides.TableStylePreset.DARK_STYLE1
pres.save("table.pptx", slides.export.SaveFormat.PPTX)
Блокировка соотношения сторон таблицы
Соотношение сторон геометрической фигуры — это соотношение ее размеров в разных измерениях. Aspose.Slides предоставляет свойство aspect_ratio_locked
, чтобы вы могли заблокировать настройку соотношения сторон для таблиц и других фигур.
Этот код на Python показывает, как заблокировать соотношение сторон для таблицы:
import aspose.pydrawing as draw
import aspose.slides as slides
with slides.Presentation() as pres:
table = pres.slides[0].shapes.add_table(100, 100, [100, 50, 30], [30, 50, 30])
print("Блокировка соотношения сторон установлена: {0}".format(table.shape_lock.aspect_ratio_locked))
table.shape_lock.aspect_ratio_locked = not table.shape_lock.aspect_ratio_locked
print("Блокировка соотношения сторон установлена: {0}".format(table.shape_lock.aspect_ratio_locked))
pres.save("pres-out.pptx", slides.export.SaveFormat.PPTX)