话不多说,直接上代码,具体的实现方法如下:

// 方法中用到的宏定义
private static final short TWIPS_PER_PIEXL = 15; // 1 Pixel = 1440 TPI / 96 DPI = 15 Twips
private static final double THGPS_PER_PIEXL = 2.5;
public static XSSFWorkbook wb =  new XSSFWorkbook(new FileInputStream("D\\test\\test.xlsx"));;/*
*  插入图片
* file 图片路线径
* c1 excel中的开始列
* r1 excel中的开始行
* c2 excel中的结束列
* r2 excel中的结束行
* cellWidth 图片宽度
* cellHeight 图片高度
*
*/public void insertImage(File file, int c1, int r1, int c2, int r2, int cellWidth, int cellHeight) {try {ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();Image src;System.out.println("==>     图片路径 " + file.getPath());if (file.getPath().endsWith(".bmp") || file.getPath().endsWith(".BMP")) {BufferedImage bi = ImageIO.read(file);ImageProducer producer = bi.getSource();Toolkit toolkit = Toolkit.getDefaultToolkit();src = toolkit.createImage(producer);} else {src = Toolkit.getDefaultToolkit().getImage(file.getPath());}BufferedImage bufferImg = toBufferedImage(src);int imageWidthPixel = bufferImg.getWidth();int imageHeightPixel = bufferImg.getHeight();double imageWidth = pixel2PoiWidth(imageWidthPixel);double imageHeight = pixel2PoiHeight(imageHeightPixel);ImageIO.write(bufferImg, "jpg", byteArrayOut);System.out.println();// 根据需求对图片进行微调XSSFClientAnchor anchor = new XSSFClientAnchor(XSSFShape.EMU_PER_POINT * 5, XSSFShape.EMU_PER_POINT * 5,XSSFShape.EMU_PER_POINT * -5, XSSFShape.EMU_PER_POINT * -5, c1, r1, c2, r2);anchor.setAnchorType(3);XSSFPicture pic = patriarch.createPicture(anchor,wb.addPicture(byteArrayOut.toByteArray(), XSSFWorkbook.PICTURE_TYPE_JPEG));byteArrayOut.flush();byteArrayOut.close();} catch (IOException e) {e.printStackTrace();}
}private static int getColsWidth(XSSFSheet sheet, int firstCol, int colCnt) {int colWidth = 0;for (int i = firstCol; i < firstCol + colCnt; i++) {colWidth = colWidth + sheet.getColumnWidth(i);}return colWidth;}private static int getRowsHeight(XSSFSheet sheet, int firstRow, int rowCnt) {int rowHeight = 0;for (int i = firstRow; i < firstRow + rowCnt; i++) {rowHeight += sheet.getRow(i).getHeight();}return rowHeight;}public static double poiHeight2Pixel(double height) {return height / TWIPS_PER_PIEXL;}// 像素转poi宽度public static double pixel2PoiWidth(double pixel) {double numChars = pixel * TWIPS_PER_PIEXL * THGPS_PER_PIEXL;return numChars;}

调用方法

 // 首先确定好图片范围,即excel中的开始行/列和结束行/列int beginCol = CellReference.convertColStringToIndex("B");int endCol = CellReference.convertColStringToIndex("L");int beginRow = 3;int endRow = 23;// 获取图片的高和宽,即图片范围内单元格的总高和总宽int picHeight = getRowsHeight(sheet, beginRow , endRow );int picWidth = getColsWidth(sheet, beginCol , endCol );// 进行图片插入处理File picFile = new File("D:\\test\\testpic.jpg");insertImage(picFile, beginCol , beginRow , endCol ,endRow , picWidth , picHeight );

java向excel中插入图片相关推荐

  1. java poi 在excel中插入图片

    java web中导出excel数据是常见的功能,最近遇到一个需求是在excel中插入图片.处理excel及其他微软办公系列软件常用的就是apache poi,它也是支持图片插入的.插入图片最主要的用 ...

  2. java 读取excel 图片_利用Java+POI 读写Excel文档向Excel中插入图片

    一.POI简介 Jakarta POI 是apache的子项目,目标是处理ole2对象.它提供了一组操纵Windows文档的Java API 目前比较成熟的是HSSF接口,处理MS Excel(97- ...

  3. java中excel导入图片_java POI实现向Excel中插入图片

    做Web开发免不了要与Excel打交道.今天老大给我一个任务-导出Excel.开始想的还是蛮简单的,无非就是查找,构建Excel,response下载即可.但是有一点不同,就是要加入图片,就是这个加入 ...

  4. excel poi 加背景图_java 在Excel中插入图片 POI实现

    一.POI简介 Jakarta POI 是apache的子项目,目标是处理ole2对象.它提供了一组操纵Windows文档的Java API 目前比较成熟的是HSSF接口,处理MS Excel(97- ...

  5. [转载] 使用openpyxl模块向Excel中插入图片

    参考链接: Python | 使用openpyxl模块在Excel工作表中绘制图表 2 使用openpyxl模块向Excel中插入图片 示例Python实现结果展示 示例 向一个Excel表格中A1位 ...

  6. python下载图片插入excel_Python向Excel中插入图片的简单实现方法

    本文实例讲述了Python向Excel中插入图片的简单实现方法.分享给大家供大家参考,具体如下: 使用Python向Excel文件中插入图片,这个功能之前学习xlwt的时候通过xlwt模块实现过.那时 ...

  7. NPOI在Excel中插入图片

    NPOI在Excel中插入图片 for (int i = 0; i < FeatureMapList.Count; i++){// 第二步:确定图片索引int pictureIdx = wk.A ...

  8. poi 向Excel中插入图片

    使用poi向excel中插入图片 直接上代码,我这里的图片是项目中的一个logo图片,所以是直接springboot读取本地文件的方式 主要解释一下定位图片位置的八个参数int dx1, int dy ...

  9. Java Poi 向excel中插入图片

    博客 package com.unicom.yangjiabin.utils;import java.awt.image.BufferedImage; import java.io.ByteArray ...

最新文章

  1. .NET学习之Foreach……
  2. 看jquery3.3.1学js类型判断的技巧
  3. 微软的Ajax库客户端Bug总结
  4. ios lua 增量更新,更新内部代码
  5. Windows 8 Hello World
  6. 购物中心潮--我的创业之路
  7. 单例模式——Java
  8. C语言版:装饰器模式
  9. Pass4side CompTIA PDI+ Beta Exam PD1-001 DEMO 免费下载
  10. 北斗形变监测系统_一款基于北斗卫星定位边坡表面位移监测系统
  11. shell 后台运行程序并写pid文件
  12. Android Data Binding 初识
  13. 必备技能:图解用电烙铁焊接电路
  14. Android Room,编译成功,倒是 build APK 失败提示: 无法访问:ActivityCompatApi23
  15. 【解决】无法为JSP编译类: Enumeration cannot be resolved to a variable
  16. Kinect能掀起体感应用开发热潮吗?
  17. MATLAB设置图片输出的尺寸大小与字体(适用科研论文)
  18. SIP协议详解(中文)-3
  19. 按键精灵 百度文字识别(百度ocr)OCRSpace文字识别
  20. 【LOJ】#2289. 「THUWC 2017」在美妙的数学王国中畅游

热门文章

  1. 3D视觉盛宴——SuperMap Realspace 立体显示技术
  2. 乘法原理的例题和答案_加法原理和乘法原理练习题
  3. 小车测速模块使用介绍
  4. acm 改革春风吹满地
  5. Raptor-选组长
  6. python学徒,Python进展路径 – 从学徒到古鲁
  7. Android 状态栏样式设置
  8. 一级b类计算机知识点,计算机等级考试(一级B)考试知识点
  9. oracle ebs 的预克隆
  10. MySQL 官方发音