Insertion d'une image dans une cellule

Introduction

Ajuster une image exactement à une seule cellule est une exigence courante lors de la conception de feuilles de calcul servant de rapports visuels, catalogues de produits, annuaires d’employés, tableaux de bord ou listes d’inventaire. Plutôt que d’étirer une image sur plusieurs cellules ou de la placer librement sur une feuille de calcul, vous pouvez souhaiter une image nette, liée à la cellule, qui reste alignée sur la cellule qui la contient. Aspose.Cells prend en charge ce scénario de deux manières complémentaires :

  • Approche 1 — Placer une image flottante sur une cellule. Ajoutez une Picture à la feuille de calcul, définissez son Placement sur MoveAndSize, et ajustez ses cellules d’ancrage (UpperLeftRow, UpperLeftColumn, LowerRightRow, LowerRightColumn) afin que l’image couvre exactement une cellule.
  • Approche 2 — Incorporer une image directement dans une cellule. Affectez les octets de l’image à la propriété EmbeddedImage de la cellule. L’image se met à l’échelle automatiquement pour s’adapter à la zone d’affichage de la cellule et se déplace avec la cellule. La suite de cet article parcourt les deux approches, explique les API concernées, et montre comment les utiliser dans le code.

Approche 1 : Placer une image sur une cellule

Une image flottante est un objet Picture qui vit sur la couche de dessin de la feuille de calcul. Bien qu’elle ne fasse partie d’aucune cellule individuelle, elle est ancrée à une plage de cellules. Les cellules d’ancrage de l’image — ses coins supérieur gauche et inférieur droit — déterminent son étendue visuelle sur la feuille de calcul. Par défaut, une image fraîchement ajoutée s’étend sur plusieurs cellules. Pour qu’une image flottante couvre exactement une cellule, vous devez :

  1. Ajouter l’image en utilisant worksheet.getPictures().add(int row, int column, InputStream stream), ce qui ancre la nouvelle image à la cellule donnée.
  2. Définir les quatre propriétés d’ancrage afin que le rectangle englobant de l’image coïncide avec la cellule cible.
  3. Définir picture.setPlacement(PlacementType.MOVE_AND_SIZE) afin que l’image se déplace et se redimensionne avec la cellule sous-jacente lorsque l’utilisateur modifie la largeur de colonne ou la hauteur de ligne.

Ancrer l’image à une seule cellule

L’ancrage de l’image est défini par quatre propriétés d’index à base zéro :

  • picture.setUpperLeftRow(int) — l’index de ligne du bord supérieur de l’image.
  • picture.setUpperLeftColumn(int) — l’index de colonne du bord gauche de l’image.
  • picture.setLowerRightRow(int) — l’index de ligne du bord inférieur de l’image. Pour que le bord inférieur de l’image se trouve au bas de la ligne r, définissez cette valeur sur r + 1.
  • picture.setLowerRightColumn(int) — l’index de colonne du bord droit de l’image. Pour que le bord droit de l’image se trouve à droite de la colonne c, définissez cette valeur sur c + 1.