1. 程式人生 > >Java Web篇:匯出等比例圖片到Excel

Java Web篇:匯出等比例圖片到Excel

ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
BufferedImage bufferImg = ImageIO.read(new File(savePath + System.getProperty("file.separator") + map.get("productImg")));
ImageIO.write(bufferImg, "jpg", byteArrayOut);
int width = bufferImg.getWidth();//原始寬度
int height = bufferImg.getHeight();//原始高度
// 一個12號字型的寬度為13,前面已設定了列的寬度為30*256,故這裡的等比例高度計算如下
height = (int) Math.round((height * (30 * 13) * 1.0 / width));
// excel單元格高度是以點單位,1點=2畫素; POI中Height的單位是1/20個點,故設定單元的等比例高度如下
row.setHeight((short) (height / 2 * 20));
// 畫圖的頂級管理器,一個sheet只能獲取一個(一定要注意這點)
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
// anchor主要用於設定圖片的屬性
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 255, (short) j, i + 1, (short) j, i + 1);
anchor.setAnchorType(3);
// 插入圖片
patriarch.createPicture(anchor,workbook.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));