Gestion des cellules
Identifier les cellules de tableau fusionnées
- Créer une instance de la classe Presentation.
- Récupérer le tableau de la première diapositive.
- Parcourir les lignes et les colonnes du tableau pour trouver les cellules fusionnées.
- Afficher un message lorsque des cellules fusionnées sont trouvées.
Ce code JavaScript vous montre comment identifier les cellules de tableau fusionnées dans une présentation :
var pres = new aspose.slides.Presentation("SomePresentationWithTable.pptx");
try {
var table = pres.getSlides().get_Item(0).getShapes().get_Item(0);// en supposant que Slide#0.Shape#0 est un tableau
for (var i = 0; i < table.getRows().size(); i++) {
for (var j = 0; j < table.getColumns().size(); j++) {
var currentCell = table.getRows().get_Item(i).get_Item(j);
if (currentCell.isMergedCell()) {
console.log(java.callStaticMethodSync("java.lang.String", "format", "Cell %d;%d is a part of merged cell with RowSpan=%d and ColSpan=%d starting from Cell %d;%d.", i, j, currentCell.getRowSpan(), currentCell.getColSpan(), currentCell.getFirstRowIndex(), currentCell.getFirstColumnIndex()));
}
}
}
} finally {
if (pres != null) {
pres.dispose();
}
}
Supprimer les bordures des cellules de tableau
- Créer une instance de la classe Presentation.
- Obtenir la référence d’une diapositive via son index.
- Définir un tableau de colonnes avec largeur.
- Définir un tableau de lignes avec hauteur.
- Ajouter un tableau à la diapositive via la méthode addTable.
- Parcourir chaque cellule pour effacer les bordures supérieure, inférieure, droite et gauche.
- Enregistrer la présentation modifiée au format PPTX.
Ce code JavaScript vous montre comment supprimer les bordures des cellules de tableau :
// Instancie la classe Presentation qui représente un fichier PPTX
var pres = new aspose.slides.Presentation();
try {
// Accède à la première diapositive
var sld = pres.getSlides().get_Item(0);
// Définit les colonnes avec leurs largeurs et les lignes avec leurs hauteurs
var dblCols = java.newArray("double", [50, 50, 50, 50]);
var dblRows = java.newArray("double", [50, 30, 30, 30, 30]);
// Ajoute la forme de tableau à la diapositive
var tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Définit le format de bordure pour chaque cellule
for (let i = 0; i < tbl.getRows().size(); i++) {
const row = tbl.getRows().get_Item(i);
for (let j = 0; j < row.size(); j++) {
const cell = row.get_Item(j);
cell.getCellFormat().getBorderTop().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.NoFill));
cell.getCellFormat().getBorderBottom().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.NoFill));
cell.getCellFormat().getBorderLeft().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.NoFill));
cell.getCellFormat().getBorderRight().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.NoFill));
}
}
// Enregistre le PPTX sur le disque
pres.save("table_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
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), le tableau résultant sera numéroté. Ce code JavaScript démontre le processus :
// Instancie la classe Presentation qui représente un fichier PPTX
var pres = new aspose.slides.Presentation();
try {
// Accède à la première diapositive
var sld = pres.getSlides().get_Item(0);
// Définit les colonnes avec leurs largeurs et les lignes avec leurs hauteurs
var dblCols = java.newArray("double", [70, 70, 70, 70]);
var dblRows = java.newArray("double", [70, 70, 70, 70]);
// Ajoute une forme de tableau à la diapositive
var tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Définit le format de bordure pour chaque cellule
for (let i = 0; i < tbl.getRows().size(); i++) {
const row = tbl.getRows().get_Item(i);
for (let j = 0; j < row.size(); j++) {
const cell = row.get_Item(j);
cell.getCellFormat().getBorderTop().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderTop().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderTop().setWidth(5);
cell.getCellFormat().getBorderBottom().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderBottom().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderBottom().setWidth(5);
cell.getCellFormat().getBorderLeft().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderLeft().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderLeft().setWidth(5);
cell.getCellFormat().getBorderRight().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderRight().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderRight().setWidth(5);
}
}
// Fusionne les cellules (1, 1) x (2, 1)
tbl.mergeCells(tbl.get_Item(1, 1), tbl.get_Item(2, 1), false);
// Fusionne les cellules (1, 2) x (2, 2)
tbl.mergeCells(tbl.get_Item(1, 2), tbl.get_Item(2, 2), false);
pres.save("MergeCells_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Nous fusionnons ensuite davantage les cellules en fusionnant (1, 1) et (1, 2). Le résultat est un tableau contenant une grande cellule fusionnée au centre :
// Instancie la classe Presentation qui représente un fichier PPTX
var pres = new aspose.slides.Presentation();
try {
// Accède à la première diapositive
var sld = pres.getSlides().get_Item(0);
// Définit les colonnes avec leurs largeurs et les lignes avec leurs hauteurs
var dblCols = java.newArray("double", [70, 70, 70, 70]);
var dblRows = java.newArray("double", [70, 70, 70, 70]);
// Ajoute une forme de tableau à la diapositive
var tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Définit le format de bordure pour chaque cellule
for (let i = 0; i < tbl.getRows().size(); i++) {
const row = tbl.getRows().get_Item(i);
for (let j = 0; j < row.size(); j++) {
const cell = row.get_Item(j);
cell.getCellFormat().getBorderTop().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderTop().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderTop().setWidth(5);
cell.getCellFormat().getBorderBottom().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderBottom().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderBottom().setWidth(5);
cell.getCellFormat().getBorderLeft().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderLeft().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderLeft().setWidth(5);
cell.getCellFormat().getBorderRight().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderRight().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderRight().setWidth(5);
}
}
// Fusionne les cellules (1, 1) x (2, 1)
tbl.mergeCells(tbl.get_Item(1, 1), tbl.get_Item(2, 1), false);
// Fusionne les cellules (1, 2) x (2, 2)
tbl.mergeCells(tbl.get_Item(1, 2), tbl.get_Item(2, 2), false);
// Fusionne les cellules (1, 1) x (1, 2)
tbl.mergeCells(tbl.get_Item(1, 1), tbl.get_Item(1, 2), true);
// Enregistre le fichier PPTX sur le disque
pres.save("MergeCells_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Numérotation dans les cellules séparées
Dans les exemples précédents, lorsque les cellules du tableau étaient fusionnées, la numérotation ou le système de numéros dans les autres cellules ne changeait pas.
Cette fois, nous prenons un tableau ordinaire (un tableau sans cellules fusionnées) et nous essayons de diviser la cellule (1,1) pour obtenir un tableau spécial. Vous voudrez peut-être prêter attention à la numérotation de ce tableau, qui peut sembler étrange. Cependant, c’est ainsi que Microsoft PowerPoint numérote les cellules de tableau et Aspose.Slides fait de même.
Ce code JavaScript démontre le processus décrit :
// Instancie la classe Presentation qui représente un fichier PPTX
var pres = new aspose.slides.Presentation();
try {
// Accède à la première diapositive
var sld = pres.getSlides().get_Item(0);
// Définit les colonnes avec leurs largeurs et les lignes avec leurs hauteurs
var dblCols = java.newArray("double", [70, 70, 70, 70]);
var dblRows = java.newArray("double", [70, 70, 70, 70]);
// Ajoute une forme de tableau à la diapositive
var tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Définit le format de bordure pour chaque cellule
for (let i = 0; i < tbl.getRows().size(); i++) {
const row = tbl.getRows().get_Item(i);
for (let j = 0; j < row.size(); j++) {
const cell = row.get_Item(j);
cell.getCellFormat().getBorderTop().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderTop().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderTop().setWidth(5);
cell.getCellFormat().getBorderBottom().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderBottom().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderBottom().setWidth(5);
cell.getCellFormat().getBorderLeft().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderLeft().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderLeft().setWidth(5);
cell.getCellFormat().getBorderRight().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderRight().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderRight().setWidth(5);
}
}
// Fusionne les cellules (1, 1) x (2, 1)
tbl.mergeCells(tbl.get_Item(1, 1), tbl.get_Item(2, 1), false);
// Fusionne les cellules (1, 2) x (2, 2)
tbl.mergeCells(tbl.get_Item(1, 2), tbl.get_Item(2, 2), false);
// Divise la cellule (1, 1)
tbl.get_Item(1, 1).splitByWidth(tbl.get_Item(2, 1).getWidth() / 2);
// Enregistre le fichier PPTX sur le disque
pres.save("SplitCells_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Modifier la couleur d’arrière-plan d’une cellule de tableau
Ce code JavaScript vous montre comment changer la couleur d’arrière-plan d’une cellule de tableau :
var presentation = new aspose.slides.Presentation();
try {
var slide = presentation.getSlides().get_Item(0);
var dblCols = java.newArray("double", [150, 150, 150, 150]);
var dblRows = java.newArray("double", [50, 50, 50, 50, 50]);
// crée un nouveau tableau
var table = slide.getShapes().addTable(50, 50, dblCols, dblRows);
// définit la couleur d'arrière-plan d'une cellule
var cell = table.get_Item(2, 3);
cell.getCellFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
presentation.save("cell_background_color.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (presentation != null) {
presentation.dispose();
}
}
Ajouter une image à l’intérieur d’une cellule de tableau
- Créer une instance de la classe Presentation.
- Obtenir la référence d’une diapositive via son index.
- Définir un tableau de colonnes avec largeur.
- Définir un tableau de lignes avec hauteur.
- Ajouter un tableau à la diapositive via la méthode addTable.
- Créer un objet
Imagespour contenir le fichier image. - Ajouter l’image
IImageà l’objetPPImage. - Définir le
FillFormatde la cellule du tableau surPicture. - Ajouter l’image à la première cellule du tableau.
- Enregistrer la présentation modifiée au format PPTX.
Ce code JavaScript vous montre comment placer une image à l’intérieur d’une cellule de tableau lors de la création d’un tableau :
// Instancie la classe Presentation qui représente un fichier PPTX
var pres = new aspose.slides.Presentation();
try {
// Accède à la première diapositive
var islide = pres.getSlides().get_Item(0);
// Définit les colonnes avec leurs largeurs et les lignes avec leurs hauteurs
var dblCols = java.newArray("double", [150, 150, 150, 150]);
var dblRows = java.newArray("double", [100, 100, 100, 100, 90]);
// Ajoute une forme de tableau à la diapositive
var tbl = islide.getShapes().addTable(50, 50, dblCols, dblRows);
// Crée un objet PPImage à partir du fichier image
var picture;
var image = aspose.slides.Images.fromFile("image.jpg");
try {
picture = pres.getImages().addImage(image);
} finally {
if (image != null) {
image.dispose();
}
}
// Ajoute l'image à la première cellule du tableau
var cellFormat = tbl.get_Item(0, 0).getCellFormat();
cellFormat.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Picture));
cellFormat.getFillFormat().getPictureFillFormat().setPictureFillMode(aspose.slides.PictureFillMode.Stretch);
cellFormat.getFillFormat().getPictureFillFormat().getPicture().setImage(picture);
// Enregistre le fichier PPTX sur le disque
pres.save("Image_In_TableCell_out.pptx", aspose.slides.SaveFormat.Pptx);
} catch (e) {console.log(e);
} finally {
if (pres != null) {
pres.dispose();
}
}
FAQ
Puis-je définir des épaisseurs et des styles de ligne différents pour les différents côtés d’une même cellule ?
Oui. Les bordures supérieure/inférieure/gauche/droite ont des propriétés distinctes, de sorte que l’épaisseur et le style de chaque côté peuvent différer. Cela découle logiquement du contrôle des bordures par côté d’une cellule démontré dans l’article.
Que se passe-t-il pour l’image si je modifie la taille de la colonne/ligne après avoir défini une image comme arrière‑plan de la cellule ?
Le comportement dépend du mode de remplissage (stretch/tile). Avec l’étirement, l’image s’ajuste à la nouvelle cellule ; avec le carrelage, les tuiles sont recalculées. L’article mentionne les modes d’affichage d’image dans une cellule.
Puis-je attribuer un hyperlien à tout le contenu d’une cellule ?
Hyperlinks sont définis au niveau du texte (portion) à l’intérieur du cadre de texte de la cellule ou au niveau de l’ensemble du tableau/forme. En pratique, vous attribuez le lien à une portion ou à tout le texte de la cellule.
Puis-je définir des polices différentes au sein d’une même cellule ?
Oui. Le cadre de texte d’une cellule prend en charge les portions (runs) avec un formatage indépendant — famille de police, style, taille et couleur.