Gerenciar Tabelas de Apresentação com Python
Introdução
Uma tabela no PowerPoint é uma maneira eficiente de apresentar informações. Informações organizadas em uma grade de células (linhas e colunas) são diretas e fáceis de entender.
Aspose.Slides fornece a classe Table, a classe Cell e outros tipos relacionados para ajudá-lo a criar, atualizar e gerenciar tabelas em qualquer apresentação.
Criar Tabelas do Zero
Esta seção mostra como criar uma tabela do zero no Aspose.Slides adicionando uma forma de tabela a um slide, definindo suas linhas e colunas e definindo tamanhos precisos. Você também verá como preencher células com texto, ajustar alinhamento e bordas e personalizar a aparência da tabela.
- Crie uma instância da classe Presentation.
- Obtenha uma referência a um slide pelo seu índice.
- Defina um array de larguras de coluna.
- Defina um array de alturas de linha.
- Adicione uma Table ao slide.
- Itere sobre cada Cell e formate suas bordas superior, inferior, direita e esquerda.
- Mescle as células das duas primeiras linhas e das duas primeiras colunas em uma única célula.
- Acesse o TextFrame de uma Cell.
- Adicione texto ao TextFrame.
- Salve a apresentação modificada.
O exemplo Python a seguir mostra como criar uma tabela em uma apresentação:
import aspose.pydrawing as draw
import aspose.slides as slides
# Instanciar a classe Presentation que representa um arquivo de apresentação.
with slides.Presentation() as presentation:
# Acessar o primeiro slide.
slide = presentation.slides[0]
# Definir larguras de coluna e alturas de linha.
column_widths = [50, 50, 50]
row_heights = [50, 30, 30, 30, 30]
# Adicionar uma forma de tabela ao slide.
table = slide.shapes.add_table(100, 50, column_widths, row_heights)
# Definir o formato de borda para cada célula.
for row in table.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
# Mesclar células de (linha 0, coluna 0) até (linha 1, coluna 1).
table.merge_cells(table.rows[0][0], table.rows[1][1], False)
# Adicionar texto à célula mesclada.
table.rows[0][0].text_frame.text = "Merged Cells"
# Salvar a apresentação no disco.
presentation.save("table.pptx", slides.export.SaveFormat.PPTX)
Numeração em Tabelas Padrão
Em uma tabela padrão, a numeração das células é simples e baseada em zero. A primeira célula de uma tabela tem índice (0, 0) (coluna 0, linha 0).
Por exemplo, em uma tabela com 4 colunas e 4 linhas, as células são numeradas da seguinte forma:
| (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) |
O exemplo Python a seguir mostra como referenciar células usando essa numeração baseada em zero:
import aspose.slides as slides
with slides.Presentation() as presentation:
# Acessar o primeiro slide.
slide = presentation.slides[0]
# Adicionar uma tabela com 4 colunas e 4 linhas.
table = slide.shapes.add_table(100, 50, [50, 50, 50, 50], [30, 30, 30, 30])
for row_index in range(len(table.rows)):
for column_index in range(len(table.rows[row_index])):
cell = table.rows[row_index][column_index]
cell.text_frame.text = f"({column_index}, {row_index})"
presentation.save("table.pptx", slides.export.SaveFormat.PPTX)
Acessar uma Tabela Existente
Esta seção explica como localizar e trabalhar com uma tabela existente em uma apresentação usando Aspose.Slides. Você aprenderá a encontrar a tabela em um slide, acessar suas linhas, colunas e células e atualizar o conteúdo ou a formatação.
- Crie uma instância da classe Presentation.
- Obtenha uma referência ao slide que contém a tabela pelo seu índice.
- Itere por todos os objetos Shape até encontrar a tabela.
- Use o objeto Table para trabalhar com a tabela.
- Salve a apresentação modificada.
Note
Se o slide contiver várias tabelas, é melhor procurar a tabela que você precisa pela propriedadealternative_text.
O exemplo Python a seguir mostra como acessar e trabalhar com uma tabela existente:
import aspose.pydrawing as draw
import aspose.slides as slides
# Instanciar a classe Presentation para carregar um arquivo PPTX.
with slides.Presentation("sample.pptx") as presentation:
# Acessar o primeiro slide.
slide = presentation.slides[0]
table = None
# Iterar pelas formas e referenciar a primeira tabela encontrada.
for shape in slide.shapes:
if isinstance(shape, slides.Table):
table = shape
break
# Definir o texto da primeira célula na primeira linha.
if table is not None:
table.rows[0][0].text_frame.text = "Found"
# Salvar a apresentação modificada no disco.
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
Encontrar a Célula que Possui um TextFrame
Quando um código genérico de processamento de texto recebe um TextFrame de uma tabela, use a propriedade TextFrame.parent_cell para obter a Cell proprietária. Para um TextFrame de célula de tabela, TextFrame.parent_cell está definido e TextFrame.parent_shape é None, mesmo que a própria tabela seja uma forma.
As coordenadas da célula estão disponíveis nas propriedades somente leitura Cell.first_column_index e Cell.first_row_index. TextFrame.parent_cell também é somente leitura: fornece navegação para o proprietário, mas não altera a propriedade. Sempre verifique se a célula retornada é None antes de usá‑la.
Para um exemplo completo que identifica proprietários de células de tabela e formas, incluindo formas associadas a nós de SmartArt, veja Search and Replace Text.
Alinhar Texto em Tabelas
Esta seção mostra como controlar a posição do texto dentro das células da tabela usando Aspose.Slides. Você aprenderá a ancorar o texto verticalmente em uma célula e a alterar a direção em que o texto é exibido.
- Crie uma instância da classe Presentation.
- Obtenha uma referência ao slide pelo seu índice.
- Adicione um objeto Table ao slide.
- Acesse um objeto Cell da tabela.
- Centralize o texto verticalmente na célula e defina a direção do texto.
- Salve a apresentação modificada.
O exemplo Python a seguir mostra como alinhar o texto em uma tabela:
import aspose.pydrawing as draw
import aspose.slides as slides
# Criar uma instância da classe Presentation.
with slides.Presentation() as presentation:
# Acessar o primeiro slide.
slide = presentation.slides[0]
# Definir larguras de coluna e alturas de linha.
column_widths = [40, 120, 120, 120]
row_heights = [100, 100, 100, 100]
# Adicionar uma forma de tabela ao slide.
table = slide.shapes.add_table(100, 50, column_widths, row_heights)
table.rows[0][0].text_frame.text = "Numbers"
table.rows[1][0].text_frame.text = "10"
table.rows[2][0].text_frame.text = "20"
table.rows[3][0].text_frame.text = "30"
# Centralizar o texto e definir orientação vertical.
cell = table.rows[0][0]
cell.text_anchor_type = slides.TextAnchorType.CENTER
cell.text_vertical_type = slides.TextVerticalType.VERTICAL270
# Salvar a apresentação no disco.
presentation.save("aligned_cell.pptx", slides.export.SaveFormat.PPTX)
Definir Formatação de Texto no Nível da Tabela
Esta seção mostra como aplicar formatação de texto no nível da tabela no Aspose.Slides para que cada célula herde um estilo consistente e unificado. Você aprenderá a definir tamanhos de fonte, alinhamentos e margens globalmente.
- Crie uma instância da classe Presentation.
- Obtenha uma referência ao slide pelo seu índice.
- Adicione um Table ao slide.
- Defina o tamanho da fonte (altura da fonte) para o texto.
- Defina o alinhamento de parágrafo e as margens.
- Defina a orientação vertical do texto.
- Salve a apresentação modificada.
O exemplo Python a seguir mostra como aplicar suas opções de formatação preferidas ao texto em uma tabela:
import aspose.pydrawing as draw
import aspose.slides as slides
# Cria uma instância da classe Presentation
with slides.Presentation() as presentation:
slide = presentation.slides[0]
table = slide.shapes.add_table(20, 20, [100, 50, 30], [30, 50, 30])
# Definir o tamanho da fonte para todas as células da tabela.
portion_format = slides.PortionFormat()
portion_format.font_height = 25
table.set_text_format(portion_format)
# Definir texto alinhado à direita e uma margem direita para todas as células da tabela.
paragraph_format = slides.ParagraphFormat()
paragraph_format.alignment = slides.TextAlignment.RIGHT
paragraph_format.margin_right = 20
table.set_text_format(paragraph_format)
# Definir a orientação vertical do texto para todas as células da tabela.
text_frame_format = slides.TextFrameFormat()
text_frame_format.text_vertical_type = slides.TextVerticalType.VERTICAL
table.set_text_format(text_frame_format)
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
Aplicar Estilos de Tabela Incorporados
Aspose.Slides permite formatar tabelas usando estilos predefinidos diretamente no código. O exemplo demonstra a criação de uma tabela, a aplicação de um estilo incorporado e a gravação do resultado — uma maneira eficaz de garantir formatação consistente e profissional.
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
table = slide.shapes.add_table(10, 10, [100, 150], [5, 5, 5])
table.style_preset = slides.TableStylePreset.DARK_STYLE1
presentation.save("table.pptx", slides.export.SaveFormat.PPTX)
Bloquear Proporção de Aspecto das Tabelas
A proporção de aspecto de uma forma é a razão de suas dimensões. Aspose.Slides fornece a propriedade aspect_ratio_locked, que permite bloquear a proporção de aspecto para tabelas e outras formas.
O exemplo Python a seguir mostra como bloquear a proporção de aspecto para uma tabela:
import aspose.pydrawing as draw
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
table = slide.shapes.add_table(20, 20, [100, 50, 30], [30, 50, 30])
print(f"Lock aspect ratio set: {table.shape_lock.aspect_ratio_locked}")
table.shape_lock.aspect_ratio_locked = not table.shape_lock.aspect_ratio_locked
print(f"Lock aspect ratio set: {table.shape_lock.aspect_ratio_locked}")
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
FAQ
Posso habilitar a direção de leitura da direita para a esquerda (RTL) para uma tabela inteira e o texto em suas células?
Sim. A tabela expõe a propriedade right_to_left, e os parágrafos têm ParagraphFormat.right_to_left. Usar ambos garante a ordem RTL correta e a renderização dentro das células.
Como posso impedir que usuários movam ou redimensionem uma tabela no arquivo final?
Use shape locks para desativar mover, redimensionar, selecionar, etc. Esses bloqueios também se aplicam a tabelas.
É suportado inserir uma imagem dentro de uma célula como plano de fundo?
Sim. Você pode definir um preenchimento de imagem para uma célula; a imagem cobrirá a área da célula de acordo com o modo escolhido (esticar ou ladrilhar).