使用poi向excel中插入图片
直接上代码,我这里的图片是项目中的一个logo图片,所以是直接springboot读取本地文件的方式
主要解释一下定位图片位置的八个参数int dx1, int dy1, int dx2, int dy2, short col1, int row1, short col2, int row2
我们先看后四个参数
short col1, int row1, short col2, int row2
前两个表示图片左上角所在的单元格左上角的位置
后两个表示图片右下角所在的单元格左上角的位置
用图片形容一下
再例如
下面再说前四个参数
int dx1, int dy1, int dx2, int dy2,
前四个参数表示图片距离excel边框的距离
//给标题插入图片
// 先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
BufferedImage bufferImg = null;
try{
//第一种方式: url地址
ClassPathResource resource = new ClassPathResource("static/acc_sta_logo.png");
bufferImg = ImageIO.read(resource.getInputStream());
// 将图片写入流中
ImageIO.write(bufferImg, "png", byteArrayOut);
// 利用HSSFPatriarch将图片写入EXCEL
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
/**
* 该构造函数有8个参数
* int dx1, int dy1, int dx2, int dy2,
* short col1, int row1, short col2, int row2
* excel中的cellNum和rowNum的index都是从0开始的
*/
//图片一导出到单元格B2中
HSSFClientAnchor anchor = new HSSFClientAnchor(350, 100, 150, 0,
(short) 0, 0, (short) 1, 2);
// 插入图片
patriarch.createPicture(anchor, wb.addPicture(byteArrayOut
.toByteArray(), HSSFWorkbook.PICTURE_TYPE_PNG));
}catch (IOException e){
e.printStackTrace();
}