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

用图片形容一下
在这里插入图片描述
再例如
在这里插入图片描述

在这里插入图片描述

下面再说前四个参数
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();
        }
  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
可以使用Apache POI的XSSFDrawing类来向Excel插入图片。下面是一个简单的示例代码: ``` import java.io.*; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.*; import org.apache.poi.util.IOUtils; public class InsertImageToExcel { public static void main(String[] args) throws Exception { // 创建Excel文档对象 XSSFWorkbook workbook = new XSSFWorkbook(); // 创建工作表对象 XSSFSheet sheet = workbook.createSheet("Sheet1"); // 读取图片文件 InputStream imageStream = new FileInputStream("image.jpg"); byte[] bytes = IOUtils.toByteArray(imageStream); // 向Excel插入图片 int pictureIdx = workbook.addPicture(bytes, Workbook.PICTURE_TYPE_JPEG); Drawing drawing = sheet.createDrawingPatriarch(); ClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 0, 0, 5, 5); Picture picture = drawing.createPicture(anchor, pictureIdx); picture.resize(); // 保存Excel文件 FileOutputStream fileOut = new FileOutputStream("workbook.xlsx"); workbook.write(fileOut); fileOut.close(); System.out.println("图片已成功插入Excel文件!"); } } ``` 在上面的代码,我们首先读取图片文件并将其转换为字节数组,然后使用`Workbook.addPicture()`方法将图片添加到Excel工作簿。接下来,我们创建一个绘图对象,并使用`Drawing.createAnchor()`创建一个插图锚点,然后使用`Drawing.createPicture()`将图片插入到锚点位置。最后,我们调用`Picture.resize()`方法来调整图片大小以适应单元格。 请注意,上面的示例代码只适用于XLSX格式的Excel文件。如果要处理XLS格式的文件,需要使用HSSFWorkbook和HSSFPicture类。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值