当前位置: 首页 > news >正文

解决 EasyExcel 填充图片占满单元格问题

本篇主要记录解决使用EasyExcel 填充图片的两个问题:

1. 如何根据标识填充

2.如果完全占满要显示的单元格

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.metadata.data.ImageData;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.nx.plugin.basic.common.exception.SystemException;
import com.nx.plugin.basic.common.utils.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;@SpringBootTest
public class DailyTest {static Logger log = LoggerFactory.getLogger(DailyTest.class);public static void main(String[] args) {Map formDataMap = new HashMap();//待填充的图片路径String picUrl = "D:\\Data\\xxx …… xxx\\99795411766660016.png";//生成的目标文件路径String targetFileNameUrl = "C:\\Users\\xxx …… xxx\\Desktop\\生成的目标文件.xlsx";//模板文件路径String templateFileNameUrl = "D:\\Data\\xxx …… xxx\\模板文件路径.xlsx";WriteCellData<Void> writeCellData = new WriteCellData<>();try {// 可以放入多个图片List<ImageData> imageDataList = new ArrayList<>();ImageData imageData = new ImageData();// 设置图片byte[] data = Files.readAllBytes(Paths.get(picUrl));imageData.setImage(data);// 类似给定了四个点位     根据给定的首行,末行,首列,末列 来锁定图片的位置imageData.setRelativeFirstRowIndex(0);  //合并单元格的第一行索引imageData.setRelativeLastRowIndex(2);   //合并单元格的第一列索引imageData.setRelativeFirstColumnIndex(0);   //合并单元格的最后一行索引imageData.setRelativeLastColumnIndex(11);   //合并单元格的最后一列索引//这四个属性就是在上面的范围的前提下 图片的边距imageData.setTop(5);imageData.setBottom(5);imageData.setLeft(5);imageData.setRight(5);imageDataList.add(imageData);writeCellData.setImageDataList(imageDataList);} catch (Exception e) {//获取图片出现异常e.printStackTrace();}//单元格填充图片formDataMap.put("codePic", writeCellData);File targetFile = new File(targetFileNameUrl);FileUtils.createFile(targetFileNameUrl);File templateFile = new File(templateFileNameUrl);if (!templateFile.exists()) {//todo 模板文件为空}try (ExcelWriter excelWriter = EasyExcel.write(targetFile).withTemplate(templateFileNameUrl).build()) {WriteSheet writeSheet = EasyExcel.writerSheet().build();//普通表单字段填充excelWriter.fill(formDataMap, writeSheet);}}
}

模板:

图片填充后的效果:

http://www.xdnf.cn/news/142057.html

相关文章:

  • leetcode0108. 将有序数组转换为二叉搜索树-medium
  • APP和小程序需要注册域名吗?(国科云)
  • JavaWeb:JavaScript
  • 【Go语言】RPC 使用指南(初学者版)
  • 深入理解C语言变量:从基础到实践
  • Electron从入门到入门
  • 资深程序员进阶设备分享,专业编程显示器RD280U
  • STM32驱动AD5318配置8通道DA详细讲解
  • 计算机组成原理:指令系统
  • 240425 leetcode exercises
  • 神经辐射场(NeRF)技术解析:3D重建与虚拟世界的未来
  • OceanBase 跻身 Forrester 三大领域代表厂商,全面支撑AI场景
  • 聚合分销小程序系统开发方案:整合AI对话、网盘、淘客CPS/CPA、电影票团购与会员卡业务
  • 蓝桥杯 6. 冰雹数
  • Kohya-ss-gui v25.0.3 训练Flux.1 大模型命令参数
  • TDengine 数据缓存技术
  • Android 编译问题 prebuilts/clang/host/linux-x86
  • MTKAndroid13-Launcher3 屏蔽部分app不让显示
  • Jenkins Pipeline 构建 CI/CD 流程
  • RK3588芯片NPU的使用:yolov8-pose例子图片检测在安卓系统部署与源码深度解析(rknn api)
  • ASP.NET Core 自动识别 appsettings.json的机制解析
  • 网络准入控制系统:2025年网络安全的坚固防线
  • 解析excel中的图片
  • 深入解析YOLO v1:实时目标检测的开山之作
  • 观测云数据在Grafana展示的最佳实践
  • 【安全扫描器原理】TCP/IP协议编程
  • 在 Vue3 中封装的 Axios 实例中,若需要为部分接口提供手动取消请求的功能
  • 智慧医疗领域TMI期刊2025年3月研究热点解析
  • 【音视频】AVIO输入模式
  • 红队系列-网络安全知识锦囊-CTF(持续更新)