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. Unix操作系统的入门与基础

    http://dev2dev.cnblogs.com/archive/2005/10/10/251894.aspx Unix操作系统的入门与基础 与大家熟悉的Windows用户界面和使用习惯不同,Un ...

  2. 请允许我成为你的夏季——shiro、jdbcInsertall

    这两天总是觉得自己被关进了一个大笼子,日子拮据.生活不就是这样吗,一边觉得自己很差劲,一边又想成为一个更好的自己.可那又有什么办法呢,万物皆有裂痕,但那又怎样,那是光照进来的地方啊. 开始学习shir ...

  3. Centos/RHEL :How to add,delete and display LVM tags

    1. 什么是LVM标签? 在你想开机启动时让逻辑卷被激活可用时,添加lvm标签是一个不错的选择.lvm标签允许那些被预先标记的实现这样的效果. 2. 配置文件 配置文件/etc/lvm/lvm.con ...

  4. 学习“花书“《深度学习》中文PDF和英文PDF

    个人觉得github上的中文版翻译的不错,有700多页,深度学习入门经典书籍,前几章的数学基础介绍的相当不错. 第一部分基本就是统计学习最基础的线性代数,概率论等,第4章值得一读,讲了些数值分析里常涉 ...

  5. CSUOJ 1541 There is No Alternative

    There is No Alternative Time Limit: 3000ms Memory Limit: 262144KB This problem will be judged on Aiz ...

  6. [Python] Understand Scope in Python

    Misunderstanding scope can cause problems in your application. Watch this lesson to learn how Python ...

  7. 自编Photoshop简单教程

    由于本科时对图形图像比較感兴趣所以Ps和Ai玩的还算能够.所以无论本科时候还是研究生阶段总是有非常多人让我帮忙处理一些图片.记得工作那一年參与一个大项目时还帮了CRI里员工处理了一些图片项目中也处理了 ...

  8. Activity中recreate方法的应用

    參考两篇文章:http://blog.csdn.net/watermusicyes/article/details/47392949     http://blog.csdn.net/droyon/a ...

  9. RTSP、HTTP、HTTPS、SDP四种协议详解

    我们将主要讲解RTSP,HTTP,HTTPS, SDP四种协议.  一:RTSP协议简介 实时流协议RTSP是一个应用层协议,用于控制具有实时特性的数据(例如多媒体流)的传送. RTSP协议一般与RT ...

  10. jsp&servlet报红线javax.servlet.jsp.XXXX cannot be resolved to a type类似错误解决办法

    javax.servlet.jsp.JspException cannot be resolved to a type javax.servlet.jsp.PageContext cannot be ...