家具设计师培训班实战课程

跟阿忠学家具设计,月薪8000只是起步

当前位置:
Poi读取excel插图的方法和操作步骤

我们在使用Excel制作表格的时候,有时会使用“Poi读取excel插图”,但是很多初学者都不懂也不会制作。下面,我就给大家讲一下“Poi读取excel插图”的相关方法和操作步骤。

首先我们要知道,POI是Java程序中的一个组件,我们要想使用个组件需要到官网下载并安装。关于下载与安装大家可以到网上搜一搜,这个有很多,并不难查。

Poi读取excel插图的方法和操作步骤

下面就是Java代码部分了,我把代码分享给大家,大家可以参考。

importjava.io.FileInputStream;

importjava.io.FileOutputStream;

importjava.io.InputStream;

importjava.util.List;

importorg.apache.poi.hssf.usermodel.HSSFClientAnchor;

importorg.apache.poi.hssf.usermodel.HSSFPicture;

importorg.apache.poi.hssf.usermodel.HSSFPictureData;

importorg.apache.poi.hssf.usermodel.HSSFShape;

importorg.apache.poi.hssf.usermodel.HSSFSheet;

importorg.apache.poi.hssf.usermodel.HSSFWorkbook;

importorg.apache.poi.openxml4j.exceptions.InvalidFormatException;

importorg.apache.poi.ss.usermodel.PictureData;

importorg.apache.poi.ss.usermodel.WorkbookFactory;

publicclassReadPicturesFromExcel{

publicstaticvoidmain(String[]args)throwsInvalidFormatException,

Exception{

InputStreaminp=newFileInputStream(

"D:\\\\Users\\\\Fancy1_Fan\\\\桌面\\\\work\\\\test.xls");

HSSFWorkbookworkbook=(HSSFWorkbook)WorkbookFactory.create(inp);

List<HSSFPictureData>pictures=workbook.getAllPictures();

HSSFSheetsheet=(HSSFSheet)workbook.getSheetAt(0);

inti=0;

for(HSSFShapeshape:sheet.getDrawingPatriarch().getChildren()){

HSSFClientAnchoranchor=(HSSFClientAnchor)shape.getAnchor();

if(shapeinstanceofHSSFPicture){

HSSFPicturepic=(HSSFPicture)shape;

introw=anchor.getRow1();

System.out.println(i+"--->"+anchor.getRow1()+":"

+anchor.getCol1());

intpictureIndex=pic.getPictureIndex()-1;

HSSFPictureDatapicData=pictures.get(pictureIndex);

System.out.println(i+"--->"+pictureIndex);

savePic(row,picData);

}

i++;

}

}

privatestaticvoidsavePic(inti,PictureDatapic)throwsException{

Stringext=pic.suggestFileExtension();

byte[]data=pic.getData();

if(ext.equals("jpeg")){

FileOutputStreamout=newFileOutputStream(

"D:\\\\Users\\\\Fancy1_Fan\\\\桌面\\\\work\\\\pict"+i+".jpg");

out.write(data);

out.close();

}

if(ext.equals("png")){

FileOutputStreamout=newFileOutputStream(

"D:\\\\Users\\\\Fancy1_Fan\\\\桌面\\\\work\\\\pict"+i+".png");

out.write(data);

out.close();

}

}

}

有人可能不懂代码的意思,下面我给大家仔细的讲一下:

代码的思路:首先,获得所有的图片--->得到sheet DrawingPatriarch的所有shape--->获得shape的anchor --->.获得picture的pictureIndex(这个很关键)--->最后假定pictureIndex就是allPictures中图片的位置,从而获得这张picture的data信息。

假定的证明:

官方文档向excel添加图片的流程是:

调用workbook的addPicture,并且返回此pictureIndex--->然后创建一个ClientAnchor--->最后通过这个pictureIndex和Anchor把它绘到sheet上

由此可见pictureIndex,ClientAnchor以及pictureData是一一对应的关系,只要能够关联这三者,就可以获得Excel中picture的完整信息了然而根据poi的api,只能单独获得picture,或者包含pictureIndex和anchor的HSSFPicture,并没有把它们关联在一起

以上就是我给大家分享的Poi读取excel插图”的所有操作和相关解答,希望对大家有所帮助。

作者:Excel自学网 发布时间:2020.01.04

家具设计课堂是国内做家具设计在线教育的线上培训机构,初入家具设计行业的准家具设计师建议在此技术提升。跟阿忠学家具设计,月薪8000只是起步!您想找一份高薪设计类的研发工作,或许家具设计课堂能帮您实现您的初衷愿景。报名学习QQ:415284424。

系统化培训家具结构设计师从家具设计课堂开始

Excel自学网提供大量优秀的Excel学习资源Excel自学网致力于建设成一个公益型Excel在线自学网站,助您轻松学习Excel