繁体   English   中英

使用Apache POI从excel文件获取图像及其位置

[英]Get an image and its position from excel file using Apache POI

是否可以使用Apache POI从xls电子表格中提取图像信息?

在我的一个项目中,我需要从.xls文件读取一些图像。 我可以一起读取所有图像,但是如何获取图像位置(如列和行数或坐标)? 否则,我可以获取图像位置,但是我不知道有关找到位置上特定图像的信息,例如图片名称或扩展名或其他信息。 我也如何获取图像和位置?

在这里读取所有图片...并在此处获取图片位置...

在这里看看:

http://poi.apache.org/components/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

- 希望这可以帮助

希望这段代码对您有所帮助)

    XSSFDrawing dp = workbook.getSheetAt(1).createDrawingPatriarch();
    List<XSSFShape> pics = dp.getShapes();
    XSSFPicture inpPic = (XSSFPicture)pics.get(0);

    XSSFClientAnchor clientAnchor = inpPic.getClientAnchor();
    inpPic.getShapeName(); // узнаю название картинки
    PictureData pict = inpPic.getPictureData();
    FileOutputStream out = new FileOutputStream("pict.jpg");
    byte[] data = pict.getData();
    out.write(data);
    out.close();
    System.out.println("col1: " + clientAnchor.getCol1() + ", col2: " + clientAnchor.getCol2() + ", row1: " + clientAnchor.getRow1() + ", row2: " + clientAnchor.getRow2());
    System.out.println("x1: " + clientAnchor.getDx1() + ", x2: " + clientAnchor.getDx2() +  ", y1: " + clientAnchor.getDy1() +  ", y2: " + clientAnchor.getDy2());

而且,如果您不想使用迭代器(因为有时它们很重)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM