`
zzc1684
  • 浏览: 1213992 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

POI实现Excel插入多张图片(转)

    博客分类:
  • poi
阅读更多

POI的操作Excel时,不可避免有操作图片的处理。怎么插入图片呢?网上也有不少介绍。

   下面的代码是向Excel中插入多张图片的例子:

  1. public static void main(String[] args) {   
  2.          FileOutputStream fileOut = null;   
  3.          BufferedImage bufferImg = null;   
  4.          BufferedImage bufferImg1 = null;   
  5.         try {   
  6.             // 先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray   
  7.             // 读入图片1   
  8.              ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();   
  9.              bufferImg = ImageIO.read(new File("d:\\test11.jpg"));   
  10.              ImageIO.write(bufferImg, "jpg", byteArrayOut);   
  11.                
  12.             // 读入图片2   
  13.              ByteArrayOutputStream byteArrayOut1 = new ByteArrayOutputStream();   
  14.              bufferImg1 = ImageIO.read(new File("d:\\test22.png"));   
  15.              ImageIO.write(bufferImg1, "png", byteArrayOut1);   
  16.   
  17.             // 创建一个工作薄   
  18.              HSSFWorkbook wb = new HSSFWorkbook();   
  19.              HSSFSheet sheet1 = wb.createSheet("test picture");   
  20.              HSSFPatriarch patriarch = sheet1.createDrawingPatriarch();   
  21.              HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 255, 255,   
  22.                      (short) 1, 1, (short) 5, 5);   
  23.              anchor.setAnchorType(3);   
  24.              HSSFClientAnchor anchor1 = new HSSFClientAnchor(0, 0, 255, 255,   
  25.                      (short) 6, 6, (short) 10, 10);   
  26.              anchor1.setAnchorType(3);   
  27.             // 插入图片1   
  28.              patriarch.createPicture(anchor, wb.addPicture(byteArrayOut   
  29.                      .toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));   
  30.             // 插入图片2   
  31.              patriarch.createPicture(anchor1, wb.addPicture(byteArrayOut1   
  32.                      .toByteArray(), HSSFWorkbook.PICTURE_TYPE_PNG));   
  33.   
  34.              fileOut = new FileOutputStream("d:/workbook.xls");   
  35.             // 写入excel文件   
  36.              wb.write(fileOut);   
  37.              fileOut.close();   
  38.          } catch (IOException io) {   
  39.              io.printStackTrace();   
  40.              System.out.println("erorr : " + io.getMessage());   
  41.          } finally {   
  42.             if (fileOut != null) {   
  43.                 try {   
  44.                      fileOut.close();   
  45.                  } catch (IOException e) {   
  46.                      e.printStackTrace();   
  47.                  }   
  48.              }   
  49.          }   
  50.      }   
  51.   

这样执行后的效果如下:(完全按照HSSFClientAnchor设置的参数显示)

这边的效果没有保持原来的倍率,有点失真了,是因为HSSFClientAnchor(0, 0, 255, 255, (short) 1, 1, (short) 5, 5); 这个构造函数的原因。

HSSFClientAnchor构造函数参数的意义如下:

     * @param dx1   the x coordinate within the first cell.
     * @param dy1   the y coordinate within the first cell.
     * @param dx2   the x coordinate within the second cell.
     * @param dy2   the y coordinate within the second cell.
     * @param col1 the column (0 based) of the first cell.
     * @param row1 the row (0 based) of the first cell.
     * @param col2 the column (0 based) of the second cell.
     * @param row2 the row (0 based) of the second cell.

其中dx1,dy1这个点是定义图片在开始cell中的起始位置。这个点是开始cell的左上为原点,相对比率来确定的。不是绝对坐标。

dx2,dy2这个点是定义图片在终了cell的终了位置。这个点是终了cell的左上为原点,相对比率来确定的。不是绝对坐标。

col1,row1是定义开始cell。

col2,row2是定义终了cell。

如果我们想要保持原始的图片大小,改一下上面代码中的下面部分就可以了。

修改前:patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));

修改后:patriarch.createPicture(anchor, wb.addPicture(byteArrayOut
                    .toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)).resize(1);

修改后效果如下:

其中resize是放大或缩小的函数。用了这个函数后,HSSFClientAnchor构造函数中的图片显示的终了cell位置就不起作用了

分享到:
评论

相关推荐

    POI向excel中插入图片

    在本文中,我们将深入探讨如何使用POI库向Excel工作簿中插入图片。这将涵盖相关的API,步骤以及一些实用技巧。 首先,我们需要理解Excel的内部结构。在Excel文件中,图片是以OLE对象的形式存储的。POI提供了...

    Springboot+Poi实现Excel的导入导出

    本项目结合了Spring Boot、MyBatis、Apache POI和MySQL,实现了Excel数据的导入导出功能,这对于数据处理和分析尤其有用。下面我们将深入探讨这些技术及其在项目中的应用。 首先,Spring Boot以其“约定优于配置”...

    java的poi生成excel图表demo

    Java的Apache POI库是一个强大的工具,用于读取、创建和修改Microsoft Office格式的文件,尤其是Excel(.xlsx)文档。在本示例中,我们将深入探讨如何利用POI库来生成Excel中的图表曲线,这对于数据可视化和报告生成...

    POI导出Excel工具类,自动设置标题 列名 文件名,可插入图片,合并单元格

    在这个场景中,我们关注的是如何使用POI来创建一个功能丰富的Excel导出工具类,它能够自动设置标题、列名、文件名,并且支持插入图片以及合并单元格。下面将详细介绍这些功能的实现。 首先,要创建一个Excel工作簿...

    基于POI的Excel多Sheet页导出导入工具类

    "基于POI的Excel多Sheet页导出导入工具类"是一个实用的Java类库,专为处理Excel文件中的多个工作表(Sheet)而设计,提供了一种高效且灵活的方式来操作Excel数据。 该工具类的核心功能包括: 1. **多Sheet页操作**...

    POI导出带图片的excel

    在实际应用中,你可能需要处理多个图片,或者根据用户输入动态插入图片。此外,还可以通过调整单元格样式、添加公式等方法来进一步丰富Excel文件的内容。总之,Apache POI提供了强大的工具,让你能够创建复杂且富有...

    poi excel转换成bean

    在Java开发中,Apache POI 是一个非常流行的库,它允许程序员创建、修改和显示Microsoft Office格式的文件,包括Excel工作簿。标题“poi excel转换成bean”涉及到的关键技术是使用Apache POI从Excel文件中读取数据并...

    java实现在Excel中插入图片

    总结起来,Java实现Excel中插入图片的核心步骤包括:导入Apache POI库,创建并操作工作簿和工作表,读取和创建图片对象,创建绘图工作表,设置图片位置,最后保存工作簿。在实际开发中,可能还需要处理图片格式转换...

    poi实现导入数据到excel模板

    poi实现导入数据到excel模板,本来想上传poi的jar包,谁知限制我只能上传15M的文件,汗。。。。。 不知道啥时候开始要分了... 代码见: https://github.com/thisisnohi/nohi-doc poi实现导入数据到excel模板。...

    JAVA poi 做EXCEL导出(包含图片) 完整版

    要插入图片,首先需要获取图片的数据,通常是从文件系统或网络加载。这里我们假设图片位于项目资源目录下: ```java FileInputStream imageStream = new FileInputStream("path_to_your_image.jpg"); byte[] ...

    POI操作Excel完美生成水印

    3. **插入图片**:加载Excel工作簿后,你可以使用Sheet对象的createDrawingPatriarch()方法创建一个绘图父元素,这是在Excel工作表上添加图形的起点。接下来,使用ClientAnchor类来定位和设置图片的大小,并使用...

    springboot+mybatis+poi 实现excel导入导出

    本篇文章将详细介绍如何利用SpringBoot和MyBatis结合Apache POI实现Excel的导入导出功能。 首先,SpringBoot是一个基于Spring框架的轻量级开发工具,它简化了新Spring应用的初始搭建以及开发过程。SpringBoot通过...

    利用POI解析excel并存入数据库demo

    Apache POI 是一个开源项目,专门用于处理 Microsoft Office 格式的文件,如 Word、Excel 和 PowerPoint。在这个"利用POI解析excel并存入数据库demo"中,我们将关注如何使用 POI 库来读取 Excel 文件,并将数据有效...

    基于poi实现word/excel转换为HTML(且兼容.doc.docx.xls.xlsx)

    Apache POI 是一个流行的开源库,专为处理Microsoft Office格式的文件,如Word(.doc/.docx)和Excel(.xls/.xlsx)。本教程将深入探讨如何使用Apache POI库来实现这些文件向HTML的转换,以实现跨平台和浏览器的兼容...

    通过POI将PPT插入图片并导出实例

    在这个实例中,我们将深入探讨如何利用POI库来创建一个PowerPoint演示文稿,并在其中插入图片。这个过程涉及到多个步骤,包括设置工作簿,创建幻灯片,以及添加图片到幻灯片。 首先,我们需要在项目中引入Apache ...

    JXL、POI实现Excel导入导出

    以上就是关于使用JXL和Apache POI实现Excel导入导出的基本知识。根据实际需求,你可以结合这两个库的功能,灵活地处理各种Excel文件操作。在实际项目中,通常会根据性能、功能需求以及文件兼容性等因素选择适合的库...

    Java利用poi对word插入文字图片

    3. **插入图片**:在Word文档中插入图片需要用到`XWPFPictureData`和`XWPFParagraph`的`addPicture`方法。首先,你需要读取图片文件,将其转换为字节数组,然后添加到文档中。以下是一个例子: ```java byte[] ...

    利用poi获取excel数据批量插入大量数据到mysql

    本教程将详述如何使用Apache POI库读取Excel数据,并通过Java的JDBC接口批量插入到MySQL数据库中。Apache POI是Java平台上的一个开源项目,它允许程序员创建、修改和显示Microsoft Office格式的文件,其中包括Excel...

    ssm通过POI技术把excel数据导入mysql

    SSM(Spring、SpringMVC、...总之,通过SSM框架结合Apache POI,我们可以实现从Excel到MySQL的高效数据迁移。这个过程涉及到文件读取、数据转换、数据库操作以及事务管理等多个环节,是Java Web开发中常见的实用技能。

Global site tag (gtag.js) - Google Analytics