天天看点

在Excel中插入图片

1. 在sheet中特定位置插入图片

Excel插入图片步骤 :

  1. 画图的顶级管理器对象HSSFPatriarch, 一个sheet只能获取一个

  2. 创建一个新的客户端锚点HSSFClientAnchor

  3. 图片转换为字节流byte[]

  4. 向Excel中添加一张图片,返回图片在excel中的索引,base 1

  5. 创建图片

2.示例:

// patriarch负责在sheet中创建图片
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
/**
 * 创建一个新的客户端锚点,附加到excel工作表,并设置左上角和右下角
 * 
 * @param realX1  图片的左上角在开始单元格(col1,row1)中的横坐标
 * @param realY1  图片的左上角在开始单元格(col1,row1)中的纵坐标
 * @param realX2  图片的右下角在结束单元格(col2,row2)中的横坐标
 * @param realY2  图片的右下角在结束单元格(col2,row2)中的纵坐标
 * @param col1	开始单元格所处的列号, base 0, 图片左上角在开始单元格内
 * @param row1	开始单元格所处的行号, base 0, 图片左上角在开始单元格内
 * @param col2	结束单元格所处的列号, base 0, 图片右下角在结束单元格内
 * @param row2	结束单元格所处的行号, base 0, 图片右下角在结束单元格内
 * */
HSSFClientAnchor anchor = new HSSFClientAnchor(realX1, realY1, realX2, realY2, col1, row1, col2, row2);
// 图片字节流
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
BufferedImage bufferImg = ImageIO.read(new File("ok.jpg"));
ImageIO.write(bufferImg, "jpg", byteArrayOut);
byte[] imgtypes = byteArrayOut.toByteArray();
/*
 * 在工作簿中添加一张图片,返回图片的索引,base 1
 * @param pictureType 图片类型 PICTURE_TYPE_JPEG|PICTURE_TYPE_PNG
 **/
int puctureIndex = workbook.addPicture(imgtypes, pictureType);
// 创建图片
patriarch.createPicture(anchor, puctureIndex);