Gestionar Celdas
Identificar Celda de Tabla Combinada
- Crea una instancia de la clase Presentation.
- Obtén la tabla de la primera diapositiva.
- Recorre las filas y columnas de la tabla para encontrar celdas combinadas.
- Imprime un mensaje cuando se encuentren celdas combinadas.
Este código Python te muestra cómo identificar celdas de tabla combinadas en una presentación:
import aspose.pydrawing as draw
import aspose.slides as slides
with slides.Presentation(path + "SomePresentationWithTable.pptx") as pres:
table = pres.slides[0].shapes[0] # asumiendo que #0.Shape#0 es una tabla
for i in range(len(table.rows)):
for j in range(len(table.columns)):
currentCell = table.rows[i][j]
if currentCell.is_merged_cell:
print("La celda 01 es parte de una celda combinada con RowSpan=2 y ColSpan=3, comenzando desde la celda 45.".format(
i, j, currentCell.row_span, currentCell.col_span, currentCell.first_row_index, currentCell.first_column_index))
Eliminar Bordes de Celdas de Tabla
- Crea una instancia de la clase
Presentation
. - Obtén una referencia de la diapositiva a través de su índice.
- Define un arreglo de columnas con ancho.
- Define un arreglo de filas con altura.
- Agrega una tabla a la diapositiva a través del método
AddTable
. - Recorre cada celda para limpiar los bordes superior, inferior, derecho e izquierdo.
- Guarda la presentación modificada como un archivo PPTX.
Este código Python te muestra cómo eliminar los bordes de las celdas de tabla:
import aspose.pydrawing as draw
import aspose.slides as slides
# Instancia la clase Presentation que representa un archivo PPTX
with slides.Presentation() as pres:
# Accede a la primera diapositiva
sld = pres.slides[0]
# Define columnas con anchos y filas con alturas
dblCols = [ 50, 50, 50, 50 ]
dblRows = [ 50, 30, 30, 30, 30 ]
# Agrega una forma de tabla a la diapositiva
tbl = sld.shapes.add_table(100, 50, dblCols, dblRows)
# Establece el formato del borde para cada celda
for row in tbl.rows:
for cell in row:
cell.cell_format.border_top.fill_format.fill_type = slides.FillType.NO_FILL
cell.cell_format.border_bottom.fill_format.fill_type = slides.FillType.NO_FILL
cell.cell_format.border_left.fill_format.fill_type = slides.FillType.NO_FILL
cell.cell_format.border_right.fill_format.fill_type = slides.FillType.NO_FILL
# Escribe el archivo PPTX en disco
pres.save("table_out.pptx", slides.export.SaveFormat.PPTX)
Numeración en Celdas Combinadas
Si combinamos 2 pares de celdas (1, 1) x (2, 1) y (1, 2) x (2, 2), la tabla resultante será numerada. Este código Python demuestra el proceso:
import aspose.pydrawing as draw
import aspose.slides as slides
# Instancia la clase Presentation que representa un archivo PPTX
with slides.Presentation() as presentation:
# Accede a la primera diapositiva
sld = presentation.slides[0]
# Define columnas con anchos y filas con alturas
dblCols = [70, 70, 70, 70]
dblRows = [70, 70, 70, 70]
# Agrega una forma de tabla a la diapositiva
tbl = sld.shapes.add_table(100, 50, dblCols, dblRows)
# Establece el formato del borde para cada celda
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
# Combina celdas (1, 1) x (2, 1)
tbl.merge_cells(tbl.rows[1][1], tbl.rows[2][1], False)
# Combina celdas (1, 2) x (2, 2)
tbl.merge_cells(tbl.rows[1][2], tbl.rows[2][2], False)
presentation.save("MergeCells_out.pptx", slides.export.SaveFormat.PPTX)
Luego combinamos las celdas aún más combinando (1, 1) y (1, 2). El resultado es una tabla que contiene una celda combinada grande en su centro:
import aspose.pydrawing as draw
import aspose.slides as slides
# Instancia la clase Presentation que representa un archivo PPTX
with slides.Presentation() as presentation:
# Accede a la primera diapositiva
slide = presentation.slides[0]
# Define columnas con anchos y filas con alturas
dblCols = [70, 70, 70, 70]
dblRows = [70, 70, 70, 70]
# Agrega una forma de tabla a la diapositiva
table = slide.shapes.add_table(100, 50, dblCols, dblRows)
# Establece el formato del 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
# Combina celdas (1, 1) x (2, 1)
table.merge_cells(table.rows[1][1], table.rows[2][1], False)
# Combina celdas (1, 2) x (2, 2)
table.merge_cells(table.rows[1][2], table.rows[2][2], False)
# Combina celdas (1, 2) x (2, 2)
table.merge_cells(table.rows[1][1], table.rows[1][2], True)
# Escribe el archivo PPTX en disco
presentation.save("MergeCells1_out.pptx", slides.export.SaveFormat.PPTX)
Numeración en Celda Dividida
En los ejemplos anteriores, cuando las celdas de la tabla se combinaban, la numeración o el sistema de números en las otras celdas no cambiaba.
Esta vez, tomamos una tabla normal (una tabla sin celdas combinadas) y luego intentamos dividir la celda (1,1) para obtener una tabla especial. Puede que desees prestar atención a la numeración de esta tabla, que podría considerarse extraña. Sin embargo, así es como Microsoft PowerPoint numera las celdas de la tabla y Aspose.Slides hace lo mismo.
Este código Python demuestra el proceso que describimos:
import aspose.pydrawing as draw
import aspose.slides as slides
# Instancia la clase Presentation que representa un archivo PPTX
with slides.Presentation() as presentation:
# Accede a la primera diapositiva
slide = presentation.slides[0]
# Define columnas con anchos y filas con alturas
dblCols = [70, 70, 70, 70]
dblRows = [70, 70, 70, 70]
# Agrega una forma de tabla a la diapositiva
table = slide.shapes.add_table(100, 50, dblCols, dblRows)
# Establece el formato del 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
# Combina celdas (1, 1) x (2, 1)
table.merge_cells(table.rows[1][1], table.rows[2][1], False)
# Combina celdas (1, 2) x (2, 2)
table.merge_cells(table.rows[1][2], table.rows[2][2], False)
# Divide la celda (1, 1).
table.rows[1][1].split_by_width(table.rows[2][1].width / 2)
# Escribe el archivo PPTX en disco
presentation.save("CellSplit_out.pptx", slides.export.SaveFormat.PPTX)
Cambiar el Color de Fondo de la Celda de Tabla
Este código Python te muestra cómo cambiar el color de fondo de una celda de tabla:
import aspose.pydrawing as draw
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
dblCols = [ 150, 150, 150, 150 ]
dblRows = [ 50, 50, 50, 50, 50 ]
# crea una nueva tabla
table = slide.shapes.add_table(50, 50, dblCols, dblRows)
# establece el color de fondo para una celda
cell = table.rows[2][3]
cell.cell_format.fill_format.fill_type = slides.FillType.SOLID
cell.cell_format.fill_format.solid_fill_color.color = draw.Color.red
presentation.save("cell_background_color.pptx", slides.export.SaveFormat.PPTX)
Agregar Imagen Dentro de la Celda de Tabla
- Crea una instancia de la clase
Presentation
. - Obtén una referencia de la diapositiva a través de su índice.
- Define un arreglo de columnas con ancho.
- Define un arreglo de filas con altura.
- Agrega una tabla a la diapositiva a través del método
AddTable
. - Crea un objeto
Bitmap
para contener el archivo de imagen. - Agrega la imagen del bitmap al objeto
IPPImage
. - Establece el
FillFormat
para la celda de tabla comoPicture
. - Agrega la imagen a la primera celda de la tabla.
- Guarda la presentación modificada como un archivo PPTX.
Este código Python te muestra cómo colocar una imagen dentro de una celda de tabla al crear una tabla:
import aspose.pydrawing as draw
import aspose.slides as slides
# Instancia un objeto de la clase Presentation
with slides.Presentation() as presentation:
# Accede a la primera diapositiva
islide = presentation.slides[0]
# Define columnas con anchos y filas con alturas
dblCols = [150, 150, 150, 150]
dblRows = [100, 100, 100, 100, 90]
# Agrega una forma de tabla a la diapositiva
tbl = islide.shapes.add_table(50, 50, dblCols, dblRows)
# Crea un objeto de imagen Bitmap para contener el archivo de imagen
image = draw.Bitmap(path + "aspose-logo.jpg")
# Crea un objeto IPPImage usando el objeto bitmap
imgx1 = presentation.images.add_image(image)
# Agrega la imagen a la primera celda de la tabla
tbl.rows[0][0].cell_format.fill_format.fill_type = slides.FillType.PICTURE
tbl.rows[0][0].cell_format.fill_format.picture_fill_format.picture_fill_mode = slides.PictureFillMode.STRETCH
tbl.rows[0][0].cell_format.fill_format.picture_fill_format.picture.image = imgx1
# Guarda el PPTX en disco
presentation.save("Image_In_TableCell_out.pptx", slides.export.SaveFormat.PPTX)