Insertar una imagen en una celda

Introducción

Ajustar una imagen exactamente a una sola celda es un requisito común al diseñar hojas de cálculo que actúan como informes visuales, catálogos de productos, directorios de empleados, paneles o listas de inventario. En lugar de estirar una imagen a lo largo de muchas celdas o colocarla de forma dispersa en una hoja de cálculo, es posible que desee una imagen limpia y vinculada a la celda que permanezca alineada con la celda que la contiene. Aspose.Cells admite este escenario de dos formas complementarias:

  • Enfoque 1 — Colocar una imagen flotante sobre una celda. Agregue un Picture a la hoja de cálculo, establezca su placement en MoveAndSize, y ajuste sus celdas de anclaje (upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn) para que la imagen cubra exactamente una celda.
  • Enfoque 2 — Incrustar una imagen directamente en una celda. Asigne los bytes de la imagen a la propiedad embeddedImage de la celda. La imagen se escala automáticamente para ajustarse al área de visualización de la celda y viaja con ella. El resto de este artículo recorre ambos enfoques, explica las API relevantes y muestra cómo usarlos en el código.

Enfoque 1: Colocar una imagen sobre una celda

Una imagen flotante es un objeto Picture que reside en la capa de dibujo de la hoja de cálculo. Aunque no forma parte de ninguna celda individual, está anclada a un rango de celdas. Las celdas de anclaje de la imagen — sus esquinas superior izquierda e inferior derecha — determinan su extensión visual en la hoja de cálculo. Por defecto, una imagen recién agregada ocupa varias celdas. Para que una imagen flotante cubra exactamente una celda, debe:

  1. Agregar la imagen usando worksheet.pictures.add(row, column, stream), que ancla la nueva imagen a la celda indicada.
  2. Establecer las cuatro propiedades de anclaje para que el rectángulo delimitador de la imagen coincida con la celda de destino.
  3. Establecer picture.placement en PlacementType.MoveAndSize para que la imagen se mueva y cambie de tamaño junto con la celda subyacente cuando el usuario modifique el ancho de columna o la altura de fila.

Anclando la imagen a una sola celda

El anclaje de la imagen se define mediante cuatro propiedades de índice basadas en cero:

  • picture.upperLeftRow — el índice de fila del borde superior de la imagen.
  • picture.upperLeftColumn — el índice de columna del borde izquierdo de la imagen.
  • picture.lowerRightRow — el índice de fila del borde inferior de la imagen. Para que el borde inferior de la imagen quede en la parte inferior de la fila r, establezca esto en r + 1.
  • picture.lowerRightColumn — el índice de columna del borde derecho de la imagen. Para que el borde derecho de la imagen quede a la derecha de la columna c, establezca esto en c + 1.

Artículos relacionados