java把图片写入excel_java poi 向excel写入图片

该博客介绍如何使用Java的Apache POI库将图片写入Excel文件。通过BufferedImage和FileInputStream读取图片,然后利用HSSFWorkbook、HSSFSheet和HSSFPatriarch等POI组件,将图片插入到指定的Excel单元格中。
摘要由CSDN通过智能技术生成

importjava.awt.image.BufferedImage;importjava.io.ByteArrayOutputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjavax.imageio.ImageIO;importorg.apache.poi.hssf.usermodel.HSSFClientAnchor;importorg.apache.poi.hssf.usermodel.HSSFPatriarch;importorg.apache.poi.hssf.usermodel.HSSFSheet;importorg.apache.poi.hssf.usermodel.HSSFWorkbook;public classPicture {public static voidmain(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);

}/*插入图片地址 文件地址 插入图片位置的关键字 图片类型*/

/***@paramfilePath

*@parampicturePath

*@paramrowNum

*@paramcellNum

*@return

*/

public static boolean insertPicture(String filePath, String picturePath, int rowNum, intcellNum) {//初始化IO流内容

FileOutputStream fileOut= null;

BufferedImage bufferImg= null;int rowN = rowNum;//图片插入行的初始化

int cellN = cellNum;//图片插入列的初始化

try{//先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray

ByteArrayOutputStream byteArrayOut = newByteArrayOutputStream();

bufferImg= ImageIO.read(new File(picturePath));//图片地址

ImageIO.write(bufferImg,"png", byteArrayOut);//创建一个工作薄

HSSFWorkbook wb = new HSSFWorkbook(newFileInputStream(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= newFileOutputStream(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();

}

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值