2012-07-20 117 views
6

是否可以使用Apache POI從xls電子表格中提取圖像信息?使用Apache POI從excel文件獲取圖像及其位置

在我的一個項目中,我需要從.xls文件讀取一些圖像。我可以一起閱讀所有圖像,但是如何獲取圖像位置(如列和行數或座標)?否則,我可以獲取圖像位置,但我無法知道關於發現位置的特定圖像的信息,如圖片名稱或擴展名或其他。我如何獲得圖像和位置?

這裏read all images...這裏get images positions...

+0

這可能是相關的: http://stackoverflow.com/questions/9232844/get-picture-position-in-apache-poi-從-Excel的XLS-HSSF 而且,這樣的: http://apache-poi.1045710.n5.nabble.com/Parse-Excel-with-Picture-td2306811.html – Sid 2012-07-20 22:22:21

+2

我也面臨同樣的問題,我發現這個:http://apache-poi.1045710.n5.nabble.com/Excel-image-sizes-td5582506.html – 2013-03-10 22:42:02

回答

4

看一看這裏:

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

樣品:

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

    } 
} 

在此之後,你可以使用工具,如的imageinfo延伸Magick找到出各種配置。呦,甚至可以將圖像轉換成不同的尺寸

看看這個類還有:

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

- 希望這有助於

0

如果你不`噸要使用迭代器(導致一些時候,他們是沉重的)

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; 
} 
相關問題