Las imágenes te hacen comprender cualquier historia de la manera fácil. Es un dicho famoso que una imagen vale más que mil palabras. Microsoft Excel le permite insertar imágenes en sus hojas de trabajo en celdas y registrar hechos contra estos. En este artículo, mostraremos cómo usar la API POI Apache para insertar una imagen en Excel archivo XLSX usando Java.

Apache Poi

Apache POI es una biblioteca Java para trabajar con formatos de archivo de oficina de Microsoft como XLS, XLSX, DOC, DOCX, PPT, PPTX, etc. Los desarrolladores de aplicaciones Java pueden usarlo para el procesamiento de documentos sin ingresar a los detalles subyacentes de la estructura de archivos internos de estos archivos.

Instalación de Apache POI API

Antes de que podamos comenzar con la escritura de código para trabajar con documentos de Excel en nuestra aplicación Java, necesitamos instalar Apache POI en nuestro sistema. Para este propósito, debemos tener las dependencias de POI disponibles en la configuración de nuestro proyecto. Se requieren las siguientes dependencias para desarrollar la aplicación Apache POI.

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.0.1</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.0.1</version>
</dependency>

Puede encontrar más información sobre Instalar la API POI para trabajar con archivos de Excel. Una vez agregado a su proyecto, el archivo pom.xml se ve lo siguiente.

¿Cómo insertar imagen en la celda de Excel usando Java?

Puede usar la biblioteca Apache POI para abrir un libro de trabajo de Excel en Java e insertar imágenes en una celda de Excel utilizando los siguientes pasos.

Pasos para agregar una imagen en XLSX usando Java POI

  1. Cree una instancia de la clase XSSFWorkBook
  2. Cree una fila y agregue celdas en la fila
  3. Cargue la imagen como un objeto InputStream
  4. Convierta el flujo de entrada a una matriz de bytes
  5. Agregue la imagen al libro de trabajo desde la matriz de bytes utilizando el método addPicture de la instancia de libro de trabajo

Agregar imagen en Excel usando Java POI Ejemplo

Veamos el código de muestra completo para agregar una imagen en una celda de Excel usando la biblioteca Java POI.

//create a new workbook
XSSFWorkbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();
//add picture data to this workbook.
FileInputStream is = new FileInputStream("FileFormat.png");
byte[] bytes = IOUtils.toByteArray(is);
int pictureIdx = wb.addPicture(bytes, Workbook.PICTURE_TYPE_PNG);
is.close();
XSSFCreationHelper helper = wb.getCreationHelper();
//create sheet
XSSFSheet sheet = wb.createSheet();
// Create the drawing patriarch.  This is the top level container for all shapes.
Drawing drawing = sheet.createDrawingPatriarch();
//add a picture shape
XSSFClientAnchor anchor = helper.createClientAnchor();
//set top-left corner of the picture,
//subsequent call of Picture#resize() will operate relative to it
anchor.setCol1(3);
anchor.setRow1(2);
Picture pict = drawing.createPicture(anchor, pictureIdx);
//auto-size picture relative to its top-left corner
pict.resize();
//save workbook
String file = "picture.xls";
if(wb instanceof XSSFWorkbook) file += "x";
try (FileOutputStream fileOut = new FileOutputStream(file)) {
    wb.write(fileOut);
    wb.close();
}
catch(Exception ex)
{
	System.out.println(ex.getMessage());
}

Conclusión

En este artículo, hemos mostrado cómo agregar una imagen a un libro de trabajo Excel XSLX usando la biblioteca Apache POI para Java. Agregaremos más ejemplos de Apache POI para trabajar con archivos de Excel utilizando la API de Apache POI. Así que estad atentos.