2015-09-26 71 views
2

在我的一个项目中,我需要从.xls文件中读取图像。对于每一行,都有一列包含我需要读出的图像。从.xls文件中读取图像及其位置参考

它看起来像我可以一起阅读所有图像,但我怎样才能得到每个图像的位置,如列和行号,所以我可以将这些图像与其他数据?

回答

2

只要形状的图片,下面是可能的:

import org.apache.poi.hssf.usermodel.*; 
import org.apache.poi.ss.usermodel.*; 
import org.apache.poi.ss.util.*; 
import org.apache.poi.openxml4j.exceptions.InvalidFormatException; 

import java.io.FileOutputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.FileInputStream; 
import java.io.InputStream; 

class GetShapePosition { 

public static void main(String[] args) { 
    try { 

    InputStream inp = new FileInputStream("workbook.xls"); 
    Workbook wb = WorkbookFactory.create(inp); 

    HSSFSheet sheet = (HSSFSheet)wb.getSheetAt(0); 

    HSSFPatriarch dravingPatriarch = sheet.getDrawingPatriarch(); 

    java.util.List<HSSFShape> shapes = dravingPatriarch.getChildren(); 

    for (HSSFShape shape : shapes) { 
    if (shape instanceof HSSFPicture) { 
    HSSFPicture hssfPicture = (HSSFPicture)shape; 
    int picIndex = hssfPicture.getPictureIndex(); 
    String filename = hssfPicture.getFileName(); 
    int row = hssfPicture.getClientAnchor().getRow1(); 
    int col = hssfPicture.getClientAnchor().getCol1(); 
    System.out.println("Picture " + picIndex + " with Filename: " + filename + " is located row: " + row + ", col: " + col); 
    } 
    } 

    } catch (InvalidFormatException ifex) { 
    } catch (FileNotFoundException fnfex) { 
    } catch (IOException ioex) { 
    } 
} 
} 
+0

谢谢..它帮助。但无法按顺序获取图像。当我调用getPictures()时,它读取图像随机顺序 –

+0

什么是getPictures?你的意思是'HSSFWorkbook.getAllPictures()'?从你用我的方法得到的'HSSFPicture',你也可以用'HSSFPicture.getPictureData()'得到'HSSFPictureData'。请参阅https://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFPicture.html –