POI讀取Excel中的圖片

 

//poi讀取Excel中的圖片
public class ReadExcelPicture{
 public ReadExcelPicture(){
 }
 public Map readPicture(String excelPath)throws InvalidFormatException, IOException {

   FileInputStream fis = new FileInputStream(excelPath);
   HSSFWorkbook workbook = (HSSFWorkbook) WorkbookFactory.create(fis);
   List<HSSFPictureData> pictures = workbook.getAllPictures();
   //假設讀取的Excel工作薄中的第一張表
   HSSFSheet sheet = workbook.getSheet("0");

   Map<Integer,HSSFPictureData> map = new HashMap<Integer,HSSFPictureData>();
   for (HSSFShape shape : sheet.getDrawingPatriarch().getChildren()) {
    HSSFClientAnchor anchor = (HSSFClientAnchor) shape.getAnchor();
    int rowIndex = anchor.getRow1();
    if (shape instanceof HSSFPicture) {
     int rowmark = rowIndex;
     picture = (HSSFPicture) shape;
     int pictureIndex = picture.getPictureIndex() - 1;
     pictureData = pictures.get(pictureIndex);
     map.put(rowmark, pictureData);
    }
  }
  return map;
 }
 public static void main(String args[]){

  String excelPath = "D:\\Excel\\test.xls";
  String savePicturePath = "D:\\images\\";
  ReadExcelPicture readExcelPicture = new ReadExcelPicture();
  Map<Integer,HSSFPictureData> map = readExcelPicture.readPicture(excelPath);
  //傳入一個你需要的Excel圖片行索引,必須確保該Excel行索引中有圖片,
  //而且是在已經讀取的Excel行索引范圍內,我傳入的是1
  HSSFPictureData pictureData = map.get(1);
  //獲取包含圖片格式的文件字符串
  String ext = pictureData.suggestFileExtension();
  //代表圖片信息的字節數據
  byte[] data = pictureData.getData();
  //根據圖片格式將圖片寫出到磁盤
  if (ext.equals("jpeg")) {
   FileOutputStream out = new FileOutputStream(savePicturePath+"a.jpg");
   out.write(data);
   out.close();
  }
  if (ext.equals("png")) {
   FileOutputStream out = new FileOutputStream(savePicturePath+"a.png");
   out.write(data);
   out.close();
  }
 }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值