Añadir Imagen A Un Excel utilizando POI

Java Add comments

image 

Antes de todo quiero aclarar los siguientes puntos:

No se puede leer una imagen que esta en una dirección web, por ejemplo www.probandocodigo.com/images/hola.jpg, sin embargo si se puede descargar la imagen y luego con el path absoluto acceder a esa imagen, en otras palabras tenemos que leer bit por bit el archivo para poder cargarla en Excel, lo aclaro pues hay varios programadores que creen que pueden acceder a la imagen desde la dirección web.

Otro punto es que versiones de la POI en la cual no se puede realizar, lamentablemente desconozco desde que versión se puede realizar por lo que les aconsejo que descarguen la ultima versión de POI en la pagina oficial, aunque para los que han utilizado la librería POI para varios reportes, carga de datos entre otras cosas les comento que hay algunas cosas que han cambiado… mas aun si han estado ocupando la versión de la POI por ahí del 2004 les dará varios problemas, tantos problemas que quizá alguien se de por vencido y prefiera no actualizar la librería.

A continuación el código:

   1: HSSFWorkbook wb = new HSSFWorkbook();
   2:   HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
   3:   HSSFClientAnchor anchor;
   4:   anchor = new HSSFClientAnchor(500,100,600,200,(short)0,0,(short)1,0);
   5:   anchor.setAnchorType( 2 );
   6:   HSSFPicture picture =  patriarch.createPicture(anchor, loadPicture(files, wb ));
   7:  
   8:   //Metodo que permite insertar imagenes a el excel
   9:   private static int loadPicture( File path, HSSFWorkbook wb ) throws IOException
  10:     {
  11:     int pictureIndex;
  12:     FileInputStream fis = null;
  13:     ByteArrayOutputStream bos = null;
  14:     try
  15:     {
  16:        // read in the image file
  17:         fis = new FileInputStream(path);
  18:         bos = new ByteArrayOutputStream( );
  19:         int c;
  20:        // copy the image bytes into the ByteArrayOutputStream
  21:         while ( (c = fis.read()) != -1)
  22:             bos.write( c );
  23:     
  24:        // add the image bytes to the workbook
  25:         pictureIndex = wb.addPicture(bos.toByteArray(), HSSFWorkbook.PICTURE_TYPE_PNG );
  26:  
  27:     }
  28:     finally
  29:     {
  30:         if (fis != null)
  31:             fis.close();
  32:         if (bos != null)
  33:             bos.close();
  34:     }
  35:     return pictureIndex;
  36:     }

Deja Un Comentario

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Log in