package com.fh.util;
import java.awt.image.BufferedImage;  
import java.io.ByteArrayOutputStream;  
import java.io.File;  
import java.io.FileOutputStream;  
import java.io.IOException;  
 
import javax.imageio.ImageIO;  
 
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;  
import org.apache.poi.hssf.usermodel.HSSFPatriarch;  
import org.apache.poi.hssf.usermodel.HSSFSheet;  
import org.apache.poi.hssf.usermodel.HSSFWorkbook;  
public class AAAA {

public static void main(String[] args) {
             FileOutputStream fileOut = null;  
            BufferedImage bufferImg = null;//图片
            try {  
                // 先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray  
                ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();  
                //将图片读到BufferedImage  
                bufferImg = ImageIO.read(new File("C:/Users/uctimes/Desktop/1.jpg"));  
                // 将图片写入流中  
                ImageIO.write(bufferImg, "png", byteArrayOut);  
                // 创建一个工作薄  
                HSSFWorkbook wb = new HSSFWorkbook();  
                //创建一个sheet  
                HSSFSheet sheet = wb.createSheet("out put excel");  
                // 利用HSSFPatriarch将图片写入EXCEL  
                HSSFPatriarch patriarch = sheet.createDrawingPatriarch();  
                /**
                 * 该构造函数有8个参数
                 * 前四个参数是控制图片在单元格的位置,分别是图片距离单元格left,top,right,bottom的像素距离
                 * 后四个参数,前连个表示图片左上角所在的cellNum和 rowNum,后天个参数对应的表示图片右下角所在的cellNum和 rowNum,
                 * excel中的cellNum和rowNum的index都是从0开始的
                 *  
                 */  
                //图片一导出到单元格B2中  
                HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 0, 0,  
                        (short) 10, 1, (short) 11, 2);  
                // 插入图片  
                patriarch.createPicture(anchor, wb.addPicture(byteArrayOut  
                        .toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));  
                //生成的excel文件地址
                fileOut = new FileOutputStream("C:/Users/uctimes/Downloads/123.xls");  
                // 写入excel文件  
                wb.write(fileOut);  
            } catch (IOException io) {  
                io.printStackTrace();  
                System.out.println("io erorr : " + io.getMessage());  
            } finally {  
                if (fileOut != null) {  
                    try {  
                        fileOut.close();  
                    } catch (IOException e) {  
                        e.printStackTrace();  
                    }  
                }  
            }  
    }
}

效果图:

poi将图片导入excel(Java代码)的更多相关文章

  1. java poi分批次导入Excel

    最近换了新工作,公司要求导入Excel要分批次导入,并且是多线程的情况下执行导入,查了很多资料,没看到比较复合的,就打算自己写一个吧,可能有不足,希望指出. 上面说到多线程,这边就不贴出代码了,具体思 ...

  2. POI插入图片至Excel使用固定的长宽

    使用POI在Excel里插入图片,如何使插入的图片使用固定的大小?先介绍原有的两种方式: 一种是指定开始和结尾单元格,然后从头画到尾,相当于平铺 还有一种就是仅指定开始的单元格,图片的大小跟这个单元格 ...

  3. poi 导出Excel java代码

    js: function initBatchExport(url,sub_key,current_sub_num){ var btn_id="#btn_char"+current_ ...

  4. Poi 写入图片进入excel

    public static void cacheWritePicture(BufferedImage bufferImg, Sheet sheet, Workbook wb, int width, i ...

  5. java poi导入Excel(个人代码)

    案例使用的框架:jsp+spring+mybaties <form id="importForm" name="importForm" method=&q ...

  6. java poi 导入excel

    最近项目需要导入excel,网上有很多例子,自己整合记录下,兼容2003和2007,暂时没有添加图片处理功能. 所需jar包  http://pan.baidu.com/s/1sjPuWDR pack ...

  7. Java 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包)

    ava 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包) 假设现在要做一个通用的导入方法: 要求: 1.xml的只定义数据库表中的column字段,字段类型,是否非空等条件 ...

  8. Java解析导入Excel文件后台代码实现

    使用MultipartFile上传Excel文件后端代码实现:(springmvc下的spring-webmvc (MultipartFile )上传) 由于POST一个包含文件上传的Form会以mu ...

  9. 在java poi导入Excel通用工具类示例详解

    转: 在java poi导入Excel通用工具类示例详解 更新时间:2017年09月10日 14:21:36   作者:daochuwenziyao   我要评论   这篇文章主要给大家介绍了关于在j ...

随机推荐

  1. rpm yum 等命令无响应的解决方法

    yum 安装查询任何东西, rpm 安装查询任何东西,执行后无任何反应,直接卡住,也没任何错误信息给出,只能杀掉进程 # yum install XXXX # yum clean all # rpm ...

  2. Bootstrap 概览

    目录1.移动设备2.响应式图片3.Normalize4.Containers 1.移动设备在Bootstrap 3中,我们重写了整个框架,使其一开始就是对移动设备友好的.这次不是简单的增加一些可选的针 ...

  3. 面试中的C++常见问题

    1.在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”? 答:首先,extern是C/C++语言中表明函数和全局变量作用范围的关键字,该关键字告诉编译器,其声明的函数和变量可 ...

  4. libevent源码深度剖析一

    libevent源码深度剖析一 ——序幕 张亮 1 前言 Libevent是一个轻量级的开源高性能网络库,使用者众多,研究者更甚,相关文章也不少.写这一系列文章的用意在于,一则分享心得:二则对libe ...

  5. 代码查看import的类是出自哪个jar包的方法(转)

    import java.security.ProtectionDomain; import java.security.CodeSource; public static void main(Stri ...

  6. spring框架 事务 注解配置方式

    user=LF password=LF jdbcUrl=jdbc:oracle:thin:@localhost:1521:orcl driverClass=oracle.jdbc.driver.Ora ...

  7. hadoop搭建好,启动服务后,无法从web界面访问50070

    在hadoop完全分布式搭建好以后,从主节点启动正常,使用jps查看启动的进程,正常,在几个从节点上使用jps查看,显示正常,但从web上输入下面网址: http://主节点IP:50070 无法正常 ...

  8. 深数据 - Deep Data

    暂无中文方面的信息,E文的也非常少,原文连接: A lot of great pieces have been written about the relatively recent surge in ...

  9. 编写高质量代码改善C#程序的157个建议——建议55:利用定制特性减少可序列化的字段

    建议55:利用定制特性减少可序列化的字段 特性(attribute)可以声明式地为代码中的目标元素添加注释.运行时可以通过查询这些托管块中的元数据信息,达到改变目标元素运行时行为的目的.System. ...

  10. 【leetcode】Move Zeroes

    Move Zeroes 题目: Given an array nums, write a function to move all 0‘s to the end of it while maintai ...