2012-07-20 40 views
6

Có thể trích xuất thông tin của hình ảnh từ một bảng tính xls bằng Apache POI không?Lấy một hình ảnh và vị trí của nó từ tệp excel bằng cách sử dụng Apache POI

Trong một trong các dự án của tôi, tôi cần đọc một số hình ảnh từ tệp .xls. Tôi có thể đọc tất cả các hình ảnh với nhau, nhưng làm thế nào tôi có thể nhận được vị trí hình ảnh (như cột và số hàng hoặc tọa độ)? Nếu không, tôi có thể nhận được vị trí hình ảnh nhưng tôi không thể biết thông tin, như tên hình ảnh hoặc tiện ích mở rộng hoặc những người khác, về một hình ảnh cụ thể tại các vị trí được tìm thấy. Làm thế nào tôi có thể có được hình ảnh và vị trí quá?

đây read all images... và đây get images positions...

+0

Điều này có thể có liên quan: http://stackoverflow.com/questions/9232844/get-picture-position-in-apache-poi- from-excel-xls-hssf Ngoài ra, điều này: http://apache-poi.1045710.n5.nabble.com/Parse-Excel-with-Picture-td2306811.html – Sid

+2

Tôi cũng phải đối mặt với cùng vấn đề và tôi thấy điều này: http://apache-poi.1045710.n5.nabble.com/Excel-image-sizes-td5582506.html –

Trả lời

4

Có một cái nhìn ở đây:

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

mẫu:

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

    } 
} 

Sau đó, bạn có thể sử dụng các công cụ như ImageInfo kéo dài Magick để tìm ra các cấu hình khác nhau. Bạn thậm chí có thể chuyển đổi hình ảnh sang các kích cỡ khác nhau.

Hãy nhìn vào lớp học này cũng như:

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

- Hope this helps

0

Và nếu bạn don `t muốn sử dụng iterator (gây ra một số lần họ là nặng)

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; 
} 
Các vấn đề liên quan