Gestionar tablas de presentación con Python
Introducción
Una tabla en PowerPoint es una forma eficaz de presentar información. La información dispuesta en una cuadrícula de celdas (filas y columnas) resulta directa y fácil de entender.
Aspose.Slides proporciona la clase Table, la clase Cell y otros tipos relacionados para ayudarle a crear, actualizar y gestionar tablas en cualquier presentación.
Crear tablas desde cero
Esta sección muestra cómo crear una tabla desde cero en Aspose.Slides añadiendo una forma de tabla a una diapositiva, definiendo sus filas y columnas y estableciendo tamaños precisos. También verá cómo rellenar celdas con texto, ajustar la alineación y los bordes, y personalizar la apariencia de la tabla.
- Crear una instancia de la clase Presentation.
- Obtener una referencia a una diapositiva mediante su índice.
- Definir una matriz de anchos de columna.
- Definir una matriz de alturas de fila.
- Añadir una Table a la diapositiva.
- Recorrer cada Cell y formatear sus bordes superior, inferior, derecho e izquierdo.
- Fusionar las celdas de las dos primeras filas y las dos primeras columnas en una única celda.
- Acceder al TextFrame de una Cell.
- Añadir texto al TextFrame.
- Guardar la presentación modificada.
El siguiente ejemplo en Python muestra cómo crear una tabla en una presentación:
import aspose.pydrawing as draw
import aspose.slides as slides
# Instanciar la clase Presentation que representa un archivo de presentación.
with slides.Presentation() as presentation:
# Acceder a la primera diapositiva.
slide = presentation.slides[0]
# Definir anchos de columna y alturas de fila.
column_widths = [50, 50, 50]
row_heights = [50, 30, 30, 30, 30]
# Añadir una forma de tabla a la diapositiva.
table = slide.shapes.add_table(100, 50, column_widths, row_heights)
# Establecer el formato de borde para cada celda.
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
# Fusionar celdas desde (fila 0, columna 0) hasta (fila 1, columna 1).
table.merge_cells(table.rows[0][0], table.rows[1][1], False)
# Añadir texto a la celda fusionada.
table.rows[0][0].text_frame.text = "Merged Cells"
# Guardar la presentación en disco.
presentation.save("table.pptx", slides.export.SaveFormat.PPTX)
Numeración en tablas estándar
En una tabla estándar, la numeración de celdas es directa y comienza en cero. La primera celda de una tabla tiene el índice (0, 0) (columna 0, fila 0).
Por ejemplo, en una tabla con 4 columnas y 4 filas, las celdas se numeran de la siguiente manera:
| (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) |
El siguiente ejemplo en Python muestra cómo referenciar celdas usando esta numeración basada en cero:
import aspose.slides as slides
with slides.Presentation() as presentation:
# Acceder a la primera diapositiva.
slide = presentation.slides[0]
# Añadir una tabla con 4 columnas y 4 filas.
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)
Acceder a una tabla existente
Esta sección explica cómo localizar y trabajar con una tabla existente en una presentación usando Aspose.Slides. Aprenderá a encontrar la tabla en una diapositiva, acceder a sus filas, columnas y celdas, y actualizar el contenido o el formato.
- Crear una instancia de la clase Presentation.
- Obtener una referencia a la diapositiva que contiene la tabla mediante su índice.
- Recorrer todos los objetos Shape hasta encontrar la tabla.
- Utilizar el objeto Table para trabajar con la tabla.
- Guardar la presentación modificada.
Nota
Si la diapositiva contiene varias tablas, es mejor buscar la tabla que necesita mediante su propiedadalternative_text.
El siguiente ejemplo en Python muestra cómo acceder y trabajar con una tabla existente:
import aspose.pydrawing as draw
import aspose.slides as slides
# Instanciar la clase Presentation para cargar un archivo PPTX.
with slides.Presentation("sample.pptx") as presentation:
# Acceder a la primera diapositiva.
slide = presentation.slides[0]
table = None
# Recorrer las formas y referenciar la primera tabla encontrada.
for shape in slide.shapes:
if isinstance(shape, slides.Table):
table = shape
break
# Establecer el texto de la primera celda de la primera fila.
if table is not None:
table.rows[0][0].text_frame.text = "Found"
# Guardar la presentación modificada en disco.
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
Encontrar la celda que posee un TextFrame
Cuando el código genérico de procesamiento de texto recibe un TextFrame de una tabla, utilice la propiedad TextFrame.parent_cell para obtener la Cell propietaria. Para un marco de texto de celda de tabla, TextFrame.parent_cell está definido y TextFrame.parent_shape es None, aunque la propia tabla es una forma.
Las coordenadas de la celda están disponibles a través de las propiedades de solo lectura Cell.first_column_index y Cell.first_row_index. TextFrame.parent_cell también es de solo lectura: proporciona la navegación al propietario pero no cambia la propiedad. Siempre compruebe que la celda devuelta no sea None antes de usarla.
Para un ejemplo completo que identifica propietarios de celdas de tabla y de formas, incluidas las formas asociadas a nodos de SmartArt, consulte Search and Replace Text.
Alinear texto en tablas
Esta sección muestra cómo controlar la posición del texto dentro de las celdas de tabla usando Aspose.Slides. Aprenderá a anclar el texto verticalmente en una celda y a cambiar la dirección en la que fluye el texto.
- Crear una instancia de la clase Presentation.
- Obtener una referencia a la diapositiva mediante su índice.
- Añadir un objeto Table a la diapositiva.
- Acceder a un objeto Cell de la tabla.
- Centrar el texto verticalmente en la celda y establecer la dirección del texto.
- Guardar la presentación modificada.
El siguiente ejemplo en Python muestra cómo alinear el texto en una tabla:
import aspose.pydrawing as draw
import aspose.slides as slides
# Crear una instancia de la clase Presentation.
with slides.Presentation() as presentation:
# Acceder a la primera diapositiva.
slide = presentation.slides[0]
# Definir anchos de columna y alturas de fila.
column_widths = [40, 120, 120, 120]
row_heights = [100, 100, 100, 100]
# Añadir una forma de tabla a la diapositiva.
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"
# Centrar el texto y establecer la orientación vertical.
cell = table.rows[0][0]
cell.text_anchor_type = slides.TextAnchorType.CENTER
cell.text_vertical_type = slides.TextVerticalType.VERTICAL270
# Guardar la presentación en disco.
presentation.save("aligned_cell.pptx", slides.export.SaveFormat.PPTX)
Establecer formato de texto a nivel de tabla
Esta sección muestra cómo aplicar formato de texto a nivel de tabla en Aspose.Slides para que cada celda herede un estilo coherente y unificado. Aprenderá a definir tamaños de fuente, alineaciones y márgenes de forma global.
- Crear una instancia de la clase Presentation.
- Obtener una referencia a la diapositiva mediante su índice.
- Añadir una Table a la diapositiva.
- Definir el tamaño de la fuente (altura de fuente) para el texto.
- Establecer la alineación de párrafo y los márgenes.
- Definir la orientación vertical del texto.
- Guardar la presentación modificada.
El siguiente ejemplo en Python muestra cómo aplicar sus opciones de formato preferidas al texto de una tabla:
import aspose.pydrawing as draw
import aspose.slides as slides
# Crear una instancia de la clase Presentation
with slides.Presentation() as presentation:
slide = presentation.slides[0]
table = slide.shapes.add_table(20, 20, [100, 50, 30], [30, 50, 30])
# Establecer el tamaño de fuente para todas las celdas de la tabla.
portion_format = slides.PortionFormat()
portion_format.font_height = 25
table.set_text_format(portion_format)
# Establecer texto alineado a la derecha y un margen derecho para todas las celdas de la tabla.
paragraph_format = slides.ParagraphFormat()
paragraph_format.alignment = slides.TextAlignment.RIGHT
paragraph_format.margin_right = 20
table.set_text_format(paragraph_format)
# Establecer la orientación vertical del texto para todas las celdas de la tabla.
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 tabla incorporados
Aspose.Slides le permite formatear tablas usando estilos predefinidos directamente en el código. El ejemplo muestra cómo crear una tabla, aplicar un estilo incorporado y guardar el resultado, una forma eficaz de garantizar un formato constante y profesional.
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 la relación de aspecto de las tablas
La relación de aspecto de una forma es la proporción entre sus dimensiones. Aspose.Slides proporciona la propiedad aspect_ratio_locked, que permite bloquear la relación de aspecto para tablas y otras formas.
El siguiente ejemplo en Python muestra cómo bloquear la relación de aspecto para una tabla:
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)
Preguntas frecuentes
¿Puedo habilitar la dirección de lectura de derecha a izquierda (RTL) para una tabla completa y el texto en sus celdas?
Sí. La tabla expone la propiedad right_to_left, y los párrafos tienen ParagraphFormat.right_to_left. Usar ambas garantiza el orden RTL correcto y la renderización dentro de las celdas.
¿Cómo puedo evitar que los usuarios muevan o cambien el tamaño de una tabla en el archivo final?
Utilice bloqueos de forma para desactivar el movimiento, el redimensionado, la selección, etc. Estos bloqueos se aplican también a las tablas.
¿Se admite insertar una imagen dentro de una celda como fondo?
Sí. Puede establecer un picture fill para una celda; la imagen cubrirá el área de la celda según el modo elegido (estirado o mosaico).