poi 向Excel中插入图片

使用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
前两个表示图片左上角所在的单元格左上角的位置
后两个表示图片右下角所在的单元格左上角的位置

用图片形容一下
poi 向Excel中插入图片_第1张图片
再例如
poi 向Excel中插入图片_第2张图片

poi 向Excel中插入图片_第3张图片

下面再说前四个参数
int dx1, int dy1, int dx2, int dy2,
前四个参数表示图片距离excel边框的距离
poi 向Excel中插入图片_第4张图片
poi 向Excel中插入图片_第5张图片

//给标题插入图片
        // 先把读进来的图片放到一个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();
        }

你可能感兴趣的:(excel,poi,插入图片,java)