2012-02-10 39 views
2

我需要的是让图片数据字节,那么它的锚细节和finaly 在屏幕上显示在我的用户目标的位置和大小,结果......获取画面位置的Apache POI从Excel XLS HSSF

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

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

,也是我们能够获取所有锚详细信息(参见HSSFClientAnchor细节here)。

问题是由锚refered不匹配getAllPictures的)HSSFPictureData集合索引(上述方法HSSFPicture.getPictureIndex()...

...现在的问题是:如何映射HSSFClientAnchor实例来具体HSSFPictureData实例还是相反?

回答

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

      } 


     } 

注: 以上代码将从一个片读取PIC数据到另一片 this.tSheet.sheet()是源片 this.newSheet是新的薄片

+1

正如我所说...问题被锚定引用的HSSFPicture.getPictureIndex()与上面的getAllPictures()方法的HSSFPictureData收集索引不匹配... – 2012-05-15 11:51:04

相关问题