当前位置: 首页 > 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);}}
}

模板:

图片填充后的效果:

相关文章:

  • javascript全栈开发之旅01
  • Spring-Framework源码环境搭建
  • window和ubuntu自签证书
  • Node.js 应用场景
  • vue3中nextTick的作用及示例
  • Asp.Net Core 基于(asp.net core 2.2) 创建asp .net core空项目
  • vite+vue2+elementui构建之 vite.config.js
  • 优化算法
  • uniapp小程序开发入门01-快速搭建一个空白的项目并预览它
  • 用C语言实现——一个中缀表达式的计算器。支持用户输入和动画演示过程。
  • 文档编辑:reStructuredText全面使用指南 — 第一部分 介绍
  • 百度打响第一枪!通用超级智能体时代,真的来了
  • Spring 与 ActiveMQ 的深度集成实践(二)
  • OpenCv高阶(九)——背景建模
  • playwright的简单使用
  • Linux实验课
  • SQL进阶知识:九、高级数据类型
  • 【Pandas】pandas DataFrame rsub
  • 在构造函数内部和外部定义的方法区别
  • 【时时三省】(C语言基础)循环程序举例
  • 许峰已任江苏省南京市副市长
  • 中青旅:第一季度营业收入约20.54亿元,乌镇景区接待游客数量同比减少6.7%
  • 周口一乡镇公务员“被老赖”,两年4场官司均败诉,市监局将线索移送公安厅
  • 三大交易所修订股票上市规则:明确关键少数责任,强化中小股东保障
  • 秦洪看盘|短线热点降温,A股回落整固
  • 释新闻|印度宣布“掐断”巴基斯坦水源,对两国意味着什么?