easyexcel导出图片到具体excel具体位置并设置大小

提示:easyexcel模板导出,并导出图片到具体位置


前言

最近在做物料工艺单,用到easyexcel通过模板导出物料数据并在excel中具体位置插入尺寸图,研究了官方语雀文档,发现导出图片使用的是ImageData类封装一些图像位置信息和图像信息,但是搞来搞去发现老是会在最后一行第一格插入或者报什么转换异常之类的,达不到效果。后面通过研究源码,找到了一条路径。本文记录一下,供广大网友参考。


一、easyexcel源码中填充图片并设置大小的方法

AbstractExcelWriteExecutorfillImage 方法
在这里插入图片描述

二、改造后的代码

// bytes为要导出的图像文件字节数组
bytes = outputStream.toByteArray();
if (bytes != null) {
    WriteContext writeContext = excelWriter.writeContext();
    Workbook workbook = writeContext.writeWorkbookHolder().getWorkbook();
    Sheet sheet = writeContext.writeSheetHolder().getCachedSheet();
    Drawing<?> drawing = sheet.getDrawingPatriarch();
    if (drawing == null) {
         drawing = sheet.createDrawingPatriarch();
    }
    CreationHelper helper = sheet.getWorkbook().getCreationHelper();
    int index = workbook.addPicture(bytes,
    FileTypeUtils.getImageTypeFormat(bytes));
    ClientAnchor anchor = helper.createClientAnchor();
    anchor.setDx2(-StyleUtil.getCoordinate(5));
    anchor.setDx1(StyleUtil.getCoordinate(5));
    // 图片位置设置代码
    anchor.setRow1(StyleUtil.getCellCoordinate(0, 0, 4));
    anchor.setCol1(StyleUtil.getCellCoordinate(0, 0, 7));
    anchor.setRow2(StyleUtil.getCellCoordinate(0, 0, 16) + 1);
    anchor.setCol2(StyleUtil.getCellCoordinate(0, 0, 14) + 1); 
    anchor.setAnchorType(ClientAnchorData.AnchorType.MOVE_AND_RESIZE.getValue());
    drawing.createPicture(anchor, index);
}

#效果图
在这里插入图片描述

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
EasyExcel 是一个基于Java的开源Excel操作工具,可以用来读取、写入Excel文件。如果你想要将图片导出Excel中,可以按照以下步骤操作: 1. 首先,需要将图片保存到本地,可以使用Java的ImageIO类将图片从网络上下载并保存到本地。 2. 然后,使用EasyExcel的WriteSheet类创建一个新的Sheet,并设置好Sheet的名称、表头等信息。 3. 接着,使用EasyExcel的WriteSheet类的write方法将数据写入到Excel中。在写入数据的过程中,可以使用EasyExcel的FillConfig类中的setImage方法将图片插入到Excel中。 4. 最后,使用EasyExcelExcelWriter类将所有的Sheet写入到Excel文件中,并关闭ExcelWriter。 下面是一个简单的示例代码: ```java // 创建ExcelWriter ExcelWriter excelWriter = EasyExcel.write("test.xlsx").build(); // 创建Sheet WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build(); // 将图片插入到Excel中 FillConfig fillConfig = FillConfig.builder().setImage(ImageIO.read(new File("image.jpg"))).build(); List<Object> list = new ArrayList<Object>(); list.add(fillConfig); excelWriter.fill(list, fillConfig, writeSheet); // 写入数据到Excel中 List<List<Object>> data = new ArrayList<List<Object>>(); data.add(Arrays.asList("Name", "Age", "Image")); data.add(Arrays.asList("Tom", 20, fillConfig)); writeSheet.setHead(data.subList(0, 1)); writeSheet.setClazz(Student.class); excelWriter.write(data.subList(1, data.size()), writeSheet); // 关闭ExcelWriter excelWriter.finish(); ``` 在这个示例代码中,我们将一张名为 "image.jpg" 的图片插入到了Excel中,并将它作为数据的一部分写入到了Excel中。注意,在将图片插入到Excel中时,需要使用FillConfig类指定图片的位置和大小等信息。同时,在写入数据的时候,需要设置数据的类型为Student类,并且将图片插入到数据中。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值