2012-07-20 15 views
6

¿Es posible extraer la información de una imagen de una hoja de cálculo xls usando Apache POI?Obtener una imagen y su posición desde el archivo de Excel usando Apache POI

En uno de mis proyectos, necesito leer algunas imágenes de un archivo .xls. Puedo leer todas las imágenes juntas, pero ¿cómo puedo obtener la posición de las imágenes (como columnas y números de filas o coordenadas)? De lo contrario, puedo obtener la posición de las imágenes, pero no puedo conocer la información, como el nombre de la imagen o la extensión u otras, sobre una imagen específica en las posiciones encontradas. ¿Cómo puedo obtener imágenes y posiciones también?

Aquí read all images... y aquí get images positions...

+0

Esto podría ser relevante: http://stackoverflow.com/questions/9232844/get-picture-position-in-apache-poi- de-excel-xls-HSSF Además, este: http://apache-poi.1045710.n5.nabble.com/Parse-Excel-with-Picture-td2306811.html – Sid

+2

También estoy mirando en la misma problema y encontré esto: http://apache-poi.1045710.n5.nabble.com/Excel-image-sizes-td5582506.html –

Respuesta

4

un vistazo aquí:

http://poi.apache.org/spreadsheet/quick-guide.html#Images

muestra:

List lst = workbook.getAllPictures(); 

for (Iterator it = lst.iterator(); it.hasNext();) { 

    PictureData pict = (PictureData)it.next(); 

    String ext = pict.suggestFileExtension(); 

    byte[] data = pict.getData(); 

    if (ext.equals("jpeg")) { 

     FileOutputStream out = new FileOutputStream("pict.jpg"); 

     out.write(data); 

     out.close(); 

    } 
} 

Después de esto, se pueden utilizar herramientas como ImageInfo que se extiende magia para encontrar a cabo varias configuraciones. Incluso puede convertir imágenes a diferentes tamaños.

Eche un vistazo a esta clase así:

http://blog.jaimon.co.uk/simpleimageinfo/SimpleImageInfo.java.html

- Espero que esto ayude

0

Y si no te quieren usar iterador (causar que algunas veces son pesados)

public List readDrawing(Workbook workbook) throws Exception { 
    List list = workbook.getAllPictures(); 

    for (int i=0; i<list.size(); i++) { 
     PictureData picture = (PictureData) list.get(i); 

     String ext = picture.suggestFileExtension(); 
     byte[] data = picture.getData(); 

     FileOutputStream out = new FileOutputStream("imageName" + "." + ext); 
     out.write(data); 
     out.close(); 
    } 

    return list; 
} 
Cuestiones relacionadas