我的需求是将图片数据作为字节,然后是它的锚点细节和最终 在我的用户的目标位置和大小的屏幕上显示结果......
API显示我们可以通过工作簿对象获取所有图片的列表,如下所示:
List<HSSFPictureData> picturesData = workbook.getAllPictures();
我们也可以获取所有锚点详细信息(请参阅HSSFClientAnchor详细信息here)。
问题是锚引用的HSSFPicture.getPictureIndex()与上面的getAllPictures()方法的HSSFPictureData集合索引不匹配...
...现在问题是:如何将HSSFClientAnchor实例映射到特定的HSSFPictureData实例或相反?
答案 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是新表