2012-12-01 91 views
0

我知道如何从excel xls/xlxs读取数据。现在我的要求是我必须使用POI 3.8从excel文件读取图像和数据。你能指导我如何做到这一点。 读取图像和数据都来自一个excel文件提前使用POI ....谢谢使用poi从excel文件读取图像和数据

回答

2

直接从the developer's guide

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

RTM :)

+0

感谢,但其只对我的图片想要从文件中读取其他数据,就像我有一个文件,其中我有一个人的图片和它的名字,电子邮件,地址和电话号码,我有100个记录像DIS,所以我想读取图片和其余数据为well workbook.getAllPic tures()会给我所有的图片 –

+0

我建议阅读开发者指南,然后,如果你已经这样做了,发布你已经尝试过的东西。 – GaryF

+0

我已经做了。我已经尝试了这个代码以及它的工作,但我的要求是读取数据和图片。我认为你没有得到我的观点 –

-1
XSSFSheet mySheet1 = workbook.getSheetAt(0); 
Iterator<Row> rowIterator1 = mySheet1.iterator(); 
if(rowIterator1.hasNext()) 
{ 
    rowIterator1.next(); 
} 
int pcount=1; 
Iterator<XSSFPictureData> it = lst.iterator(); 

for (int i=0; i<lst.size(); i++) 
{ 
    Row row = rowIterator1.next(); 

// PictureData pict = (PictureData)it.next(); 
    PictureData pict = (PictureData)lst.get(i); 

    String ext = pict.suggestFileExtension(); 

    byte[] data = pict.getData(); 
    String studentName = row.getCell(3).getStringCellValue(); 
    int age =(int)row.getCell(14).getNumericCellValue(); 
    int year = (int)row.getCell(16).getNumericCellValue(); 

    System.out.println(studentName+":"+age+":"+year); 

    FileOutputStream out = new FileOutputStream("D:\\excel\\RPC\\"+pcount+"."+year+"."+age+".png"); 

    out.write(data); 
    out.close(); 
    pcount++; 

    rowIterator1.hasNext(); 

    } 
} 
相关问题