2012-07-20 9 views
6

Czy można wyodrębnić informacje o obrazie z arkusza kalkulacyjnego Xls przy użyciu Apache POI?Uzyskaj obraz i jego położenie z pliku Excela za pomocą Apache POI

W jednym z moich projektów, potrzebuję przeczytać niektóre obrazy z pliku .xls. Mogę czytać wszystkie obrazy razem, ale jak mogę uzyskać położenie obrazów (jak kolumny, numery wierszy lub współrzędne)? W przeciwnym razie mogę uzyskać pozycję obrazu, ale nie mogę znać informacji, takich jak nazwa zdjęcia lub rozszerzenie, ani innych, o konkretnym obrazie na znalezionych pozycjach. Jak mogę również uzyskać obrazy i pozycje?

Tutaj read all images... i tutaj get images positions...

+0

może to być istotne: http://stackoverflow.com/questions/9232844/get-picture-position-in-apache-poi- z-Excel xls-hssf Również to: http://apache-poi.1045710.n5.nabble.com/Parse-Excel-with-Picture-td2306811.html – Sid

+2

Jestem również stoi w tym samym problem i znalazłem to: http://apache-poi.1045710.n5.nabble.com/Excel-image-sizes-td5582506.html –

Odpowiedz

4

Sprawdźcie tutaj:

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

Próbka:

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(); 

    } 
} 

Po tym, można użyć narzędzi, takich jak ImageInfo która rozciąga Magick znaleźć różne konfiguracje. Możesz nawet konwertować obrazy do różnych rozmiarów.

Spójrz na tej klasy także:

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

- Mam nadzieję, że to pomaga

0

A jeśli Don`t chcesz użyć iterator (powodować pewne czasy są ciężkie)

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; 
} 
Powiązane problemy