欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > 解决 EasyExcel 填充图片占满单元格问题

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

2025/4/30 9:34:09 来源:https://blog.csdn.net/sinat_35626559/article/details/147499801  浏览:    关键词:解决 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);}}
}

模板:

图片填充后的效果:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词