Gérer les cellules
Identifier la cellule de table fusionnée
- Créez une instance de la classe Presentation.
- Obtenez la table à partir de la première diapositive.
- Parcourez les lignes et les colonnes de la table pour trouver les cellules fusionnées.
- Imprimez un message lorsque des cellules fusionnées sont trouvées.
Ce code Python vous montre comment identifier les cellules de table fusionnées dans une présentation :
import aspose.pydrawing as draw
import aspose.slides as slides
with slides.Presentation(path + "SomePresentationWithTable.pptx") as pres:
table = pres.slides[0].shapes[0] # en supposant que #0.Shape#0 est une table
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 cellule 01 fait partie d'une cellule fusionnée avec RowSpan=2 et ColSpan=3 à partir de la cellule 45.".format(
i, j, currentCell.row_span, currentCell.col_span, currentCell.first_row_index, currentCell.first_column_index))
Supprimer la bordure des cellules de table
- Créez une instance de la classe
Presentation
. - Obtenez une référence à une diapositive via son index.
- Définissez un tableau de colonnes avec des largeurs.
- Définissez un tableau de lignes avec des hauteurs.
- Ajoutez une table à la diapositive via la méthode
AddTable
. - Parcourez chaque cellule pour effacer les bordures supérieure, inférieure, droite et gauche.
- Enregistrez la présentation modifiée en tant que fichier PPTX.
Ce code Python vous montre comment supprimer les bordures des cellules de table :
import aspose.pydrawing as draw
import aspose.slides as slides
# Instancie la classe Presentation qui représente un fichier PPTX
with slides.Presentation() as pres:
# Accède à la première diapositive
sld = pres.slides[0]
# Définit les colonnes avec des largeurs et les lignes avec des hauteurs
dblCols = [ 50, 50, 50, 50 ]
dblRows = [ 50, 30, 30, 30, 30 ]
# Ajoute une forme de tableau à la diapositive
tbl = sld.shapes.add_table(100, 50, dblCols, dblRows)
# Définit le format de bordure pour chaque cellule
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
# Écrit le fichier PPTX sur le disque
pres.save("table_out.pptx", slides.export.SaveFormat.PPTX)
Numérotation dans les cellules fusionnées
Si nous fusionnons 2 paires de cellules (1, 1) x (2, 1) et (1, 2) x (2, 2), la table résultante sera numérotée. Ce code Python démontre le processus :
import aspose.pydrawing as draw
import aspose.slides as slides
# Instancie la classe Presentation qui représente un fichier PPTX
with slides.Presentation() as presentation:
# Accède à la première diapositive
sld = presentation.slides[0]
# Définit les colonnes avec des largeurs et les lignes avec des hauteurs
dblCols = [70, 70, 70, 70]
dblRows = [70, 70, 70, 70]
# Ajoute une forme de tableau à la diapositive
tbl = sld.shapes.add_table(100, 50, dblCols, dblRows)
# Définit le format de bordure pour chaque cellule
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
# Fusionne les cellules (1, 1) x (2, 1)
tbl.merge_cells(tbl.rows[1][1], tbl.rows[2][1], False)
# Fusionne les cellules (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)
Nous fusionnons ensuite les cellules en fusionnant (1, 1) et (1, 2). Le résultat est une table contenant une grande cellule fusionnée au centre :
import aspose.pydrawing as draw
import aspose.slides as slides
# Instancie la classe Presentation qui représente un fichier PPTX
with slides.Presentation() as presentation:
# Accède à la première diapositive
slide = presentation.slides[0]
# Définit les colonnes avec des largeurs et les lignes avec des hauteurs
dblCols = [70, 70, 70, 70]
dblRows = [70, 70, 70, 70]
# Ajoute une forme de tableau à la diapositive
table = slide.shapes.add_table(100, 50, dblCols, dblRows)
# Définit le format de bordure pour chaque cellule
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
# Fusionne les cellules (1, 1) x (2, 1)
table.merge_cells(table.rows[1][1], table.rows[2][1], False)
# Fusionne les cellules (1, 2) x (2, 2)
table.merge_cells(table.rows[1][2], table.rows[2][2], False)
# Fusionne les cellules (1, 2) x (2, 2)
table.merge_cells(table.rows[1][1], table.rows[1][2], True)
# Écrit le fichier PPTX sur disque
presentation.save("MergeCells1_out.pptx", slides.export.SaveFormat.PPTX)
Numérotation dans une cellule divisée
Dans les exemples précédents, lorsque les cellules de table ont été fusionnées, la numération ou le système numérique dans d’autres cellules n’a pas changé.
Cette fois, nous prenons une table régulière (une table sans cellules fusionnées) et essayons de diviser la cellule (1,1) pour obtenir une table spéciale. Vous voudrez peut-être prêter attention à la numérotation de cette table, qui peut sembler étrange. Cependant, c’est ainsi que Microsoft PowerPoint numérote les cellules de table et Aspose.Slides fait la même chose.
Ce code Python démontre le processus que nous avons décrit :
import aspose.pydrawing as draw
import aspose.slides as slides
# Instancie la classe Presentation qui représente un fichier PPTX
with slides.Presentation() as presentation:
# Accède à la première diapositive
slide = presentation.slides[0]
# Définit les colonnes avec des largeurs et les lignes avec des hauteurs
dblCols = [70, 70, 70, 70]
dblRows = [70, 70, 70, 70]
# Ajoute une forme de tableau à la diapositive
table = slide.shapes.add_table(100, 50, dblCols, dblRows)
# Définit le format de bordure pour chaque cellule
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
# Fusionne les cellules (1, 1) x (2, 1)
table.merge_cells(table.rows[1][1], table.rows[2][1], False)
# Fusionne les cellules (1, 2) x (2, 2)
table.merge_cells(table.rows[1][2], table.rows[2][2], False)
# Divise la cellule (1, 1).
table.rows[1][1].split_by_width(table.rows[2][1].width / 2)
# Écrit le fichier PPTX sur disque
presentation.save("CellSplit_out.pptx", slides.export.SaveFormat.PPTX)
Changer la couleur d’arrière-plan de la cellule de table
Ce code Python vous montre comment changer la couleur d’arrière-plan d’une cellule de table :
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 ]
# crée une nouvelle table
table = slide.shapes.add_table(50, 50, dblCols, dblRows)
# définit la couleur d'arrière-plan pour une cellule
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)
Ajouter une image à l’intérieur d’une cellule de table
- Créez une instance de la classe
Presentation
. - Obtenez une référence à une diapositive via son index.
- Définissez un tableau de colonnes avec une largeur.
- Définissez un tableau de lignes avec une hauteur.
- Ajoutez une table à la diapositive via la méthode
AddTable
. - Créez un objet
Bitmap
pour contenir le fichier image. - Ajoutez l’image bitmap à l’objet
IPPImage
. - Définissez le
FillFormat
pour la cellule de table surPicture
. - Ajoutez l’image à la première cellule de la table.
- Enregistrez la présentation modifiée en tant que fichier PPTX.
Ce code Python vous montre comment placer une image à l’intérieur d’une cellule de table lors de la création d’une table :
import aspose.pydrawing as draw
import aspose.slides as slides
# Instancie un objet de classe Presentation
with slides.Presentation() as presentation:
# Accède à la première diapositive
islide = presentation.slides[0]
# Définit les colonnes avec des largeurs et les lignes avec des hauteurs
dblCols = [150, 150, 150, 150]
dblRows = [100, 100, 100, 100, 90]
# Ajoute une forme de tableau à la diapositive
tbl = islide.shapes.add_table(50, 50, dblCols, dblRows)
# Crée un objet Image Bitmap pour contenir le fichier image
image = draw.Bitmap(path + "aspose-logo.jpg")
# Crée un objet IPPImage en utilisant l'objet bitmap
imgx1 = presentation.images.add_image(image)
# Ajoute l'image à la première cellule de la table
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
# Enregistre le PPTX sur disque
presentation.save("Image_In_TableCell_out.pptx", slides.export.SaveFormat.PPTX)