import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
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 Picture {
public static void main(String[] args) {
//String filepath = SpringConfigUtil.getValue("filepath");
//String picturepath = SpringConfigUtil.getValue("picturepath");
//int rowNum = Integer.parseInt(SpringConfigUtil.getValue("rowNum"));
// int cellNum = Integer.parseInt(SpringConfigUtil.getValue("cellNum"));
boolean result = insertPicture("E:\\data\\file\\201509\\2015.xls", "E:\\data\\file\\201509\\test.jpg", 3, 5);// 1代表插入的行数-1
// ,2代表插入的列数-1 System.out.println("图片插入结果为==" + result); } /* 插入图片地址 文件地址 插入图片位置的关键字 图片类型 */ /**
* @param filePath
* @param picturePath
* @param rowNum
* @param cellNum
* @return
*/
public static boolean insertPicture(String filePath, String picturePath, int rowNum, int cellNum) {
// 初始化IO流内容 FileOutputStream fileOut = null;
BufferedImage bufferImg = null;
int rowN = rowNum;// 图片插入行的初始化
int cellN = cellNum;// 图片插入列的初始化
try { // 先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); bufferImg = ImageIO.read(new File(picturePath));// 图片地址 ImageIO.write(bufferImg, "png", byteArrayOut); // 创建一个工作薄
HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(filePath));
HSSFSheet sheet1 = wb.getSheetAt(0); // 创建插入图片需要的容器
HSSFPatriarch patriarch = sheet1.createDrawingPatriarch();
/*
* HSSFClientAnchor几个数字解释:3:是x轴的开始节点, 0:
* 是y轴的开始节点,1023:是x轴的结束节点,255:是y轴的结束节点
* ,1:是从Excel的2列开始插入图片,10:是从excel的第11行开始插入图片,
* 11:图片占用11列的位置,25:图片结束在excel的26行
*/
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 255, (short) ((short) cellN), (rowN),
(short) ((short) cellN + 1), (rowN)); anchor.setAnchorType(2); // 插入图片 patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); fileOut = new FileOutputStream(filePath);
// 写入excel文件
wb.write(fileOut);
fileOut.close();
return true;
} catch (IOException io) { io.printStackTrace(); System.out.println("io erorr : " + io.getMessage());
return false; } finally { if (fileOut != null) { try { fileOut.close(); } catch (IOException e) { e.printStackTrace(); }
}
} }
}

参数读取:

import java.util.Properties;

import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PropertiesLoaderUtils; public class SpringConfigUtil { private static Properties spring_props = new Properties();
static {
try {
Resource resource = new ClassPathResource("/META-INF/config/app-config.properties");
spring_props = PropertiesLoaderUtils.loadProperties(resource);
} catch (Exception e) {
e.printStackTrace();
}
}
public static String getValue(String key) {
String value = "";
if (spring_props.containsKey(key)) {
value = spring_props.getProperty(key, "");
}
return value;
}
}

java poi 向excel写入图片的更多相关文章

  1. 重构:以Java POI 导出EXCEL为例

    重构 开头先抛出几个问题吧,这几个问题也是<重构:改善既有代码的设计>这本书第2章的问题. 什么是重构? 为什么要重构? 什么时候要重构? 接下来就从这几个问题出发,通过这几个问题来系统的 ...

  2. 利用POI获取Excel中图片和图片位置

    利用POI获取Excel中图片和图片位置(支持excel2003or2007多sheet) 转自:http://blog.csdn.net/delongcpp/article/details/8833 ...

  3. java POI创建Excel示例(xslx和xsl区别 )

    Java用来处理office类库有很多,其中POI就是比较出名的一个,它是apache的类库,现在版本到了3.10,也就是2014年2月8号这个版本. 在处理PPT,Excel和Word前,需要导入以 ...

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

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

  5. Java POI读取Excel数据,将数据写入到Excel表格

    1.准备 首先需要导入poi相应的jar包,包括: 下载地址:http://pan.baidu.com/s/1bpoxdz5 所需要的包的所在位置包括: 2.读取Excel数据代码 package S ...

  6. 重构:以Java POI 导出EXCEL为例2

    前言 上一篇博文已经将一些对象抽象成成员变量以及将一些代码块提炼成函数.这一节将会继续重构原有的代码,将一些函数抽象成类,增加成员变量,将传入的参数合成类等等. 上一篇博文地址:http://www. ...

  7. Java POI 导出EXCEL经典实现 Java导出Excel

    转自http://blog.csdn.net/evangel_z/article/details/7332535 在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者 ...

  8. Java POI 导出excel表

    1.首先下载poi-3.6-20091214.jar,下载地址如下: http://download.csdn.net/detail/evangel_z/3895051 2.Student.java ...

  9. Java POI 实现Excel相同数据同一颜色,不同数据颜色交替显示

    目录 1.效果图 2.具体代码实现 excel 读取工具类 excel写入和测试类 1.效果图 2.具体代码实现 excel 读取工具类 package utils; import java.io.F ...

随机推荐

  1. 基于 Web 的 Go 语言 IDE - Wide 1.2.0 发布!

    Wide 是什么 Wide 是一个基于 Web 的 Go 语言团队 IDE. 在线开发:打开浏览器就可以进行开发.全快捷键 智能提示:代码自动完成.查看表达式.编译反馈.Lint 实时运行:极速编译. ...

  2. Java 学习(13):抽象类& 抽象方法& 封装

    目录 --- 抽象类 --- 封装 抽象类: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的 ...

  3. Windows操作系统下将Redis安装为服务

    安装服务: E:/Redis/Redis-x64-3.2.100/redis-server.exe --service-install E:/Redis/Redis-x64-3.2.100/redis ...

  4. Add Webhooks to Your API the Right Way

    Add Webhooks to Your API the Right Way Adam DuVander / December 15, 2016 In the last 10 years, APIs ...

  5. oculus rift 开发(一)

    我使用的是oculus rift DK2,也就是开发人员版.在開始使用前.要确保几件事: 一.准备工作 1.pc配置.配置越好执行越流畅.反之会使帧率低.伴随的体验就是眩晕恶心,甚至无法执行. 官方推 ...

  6. Python: PS 滤镜-- Fish lens

    本文实现 PS 滤镜中的一种几何变换– Fish lens, 对图像做扭曲,感觉就像通过一个凸镜或者凹镜在观察图像一样. import numpy as np from skimage import ...

  7. H265(HEVC) nal 单元头介绍及rtp发送中的fu分组发送详解

    首先来介绍下h265(HEVC)nal单元头,与h264的nal层相比,h265的nal unit header有两个字节构成,如下图所示: 从图中可以看出hHEVC的nal包结构与h264有明显的不 ...

  8. css3.0+html绘制六边形

    <section class="ass_desc"> <section class="ass_descLeft posRe"> < ...

  9. spring三大框架整合

        Spring概述 Spring介绍 Spring它是一个一站式的分层轻量级框架. Spring体系结构 1.      core container a)        beans与core ...

  10. 深入具体解释SQL中的Null

    NULL 在计算机和编程世界中表示的是未知,不确定.尽管中文翻译为 "空", 但此空(null)非彼空(empty). Null表示的是一种未知状态.未来状态,比方小明兜里有多少钱 ...