从Excel xls HSSF获取Apache POI中的图片位置

时间:2012-02-10 18:29:47

标签: apache apache-poi image

我的需求是将图片数据作为字节,然后是它的锚点细节和最终 在我的用户的目标位置和大小的屏幕上显示结果......

API显示我们可以通过工作簿对象获取所有图片的列表,如下所示:

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

我们也可以获取所有锚点详细信息(请参阅HSSFClientAnchor详细信息here)。

问题是锚引用的HSSFPicture.getPictureIndex()与上面的getAllPictures()方法的HSSFPictureData集合索引不匹配...

...现在问题是:如何将HSSFClientAnchor实例映射到特定的HSSFPictureData实例或相反?

1 个答案:

答案 0 :(得分:1)

List<HSSFShape> shapes  = this.tSheet.sheet().getDrawingPatriarch().getChildren();
        for (int i = 0; i < shapes.size(); i++)
        {
            if(shapes.get(i) instanceof HSSFPicture)
            {   
                HSSFPicture pic = (HSSFPicture) shapes.get(i);
                HSSFPictureData picdata = this.tSheet.sheet().getWorkbook().getAllPictures().get(pic.getPictureIndex());
                int pictureIndex = this.newSheet.getWorkbook().addPicture( picdata.getData(), picdata.getFormat());

this.newSheet.createDrawingPatriarch().createPicture((HSSFClientAnchor)pic.getAnchor()r, pictureIndex);

            }


        }

注意: 上面的代码将从一张纸到另一张纸读取图片数据 this.tSheet.sheet()是源表 this.newSheet是新表