POI实现EXCEL导出(resources配置路径下或者网络图片)

工作越来越忙了,很久没来更新了,刚好今天抽个小空,整理下excel导出图片的总结,希望对你有用~

1、项目resources下创建文件夹file,将520.png图片放到文件夹下,代码如下:

HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
// 读取图片
File file = ResourceUtils.getFile("classpath:file/520.png");
// 获取路径
String url = file.getAbsolutePath();
BufferedImage bufferImg = ImageIO.read(new File(url));
ImageIO.write(bufferImg, "png", byteArrayOut);
// 图片一导出到单元格A1中
HSSFClientAnchor anchor = new HSSFClientAnchor(0,0,1023,255,(short) 0,0,(short) 0,0);
// 插入图片,注意这个问题PICTURE_TYPE_JPEG。如果导出的图片没有显示出来,改动这里
patriarch.createPicture(anchor, workbook.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));

2、导出网络图片,例如:

HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
URL url = new URL("https://t7.baidu.com/it/u=3281686603,2838365105&fm=193&f=GIF");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
InputStream inStream = conn.getInputStream();
byte[] byteData = readInputStream(inStream);
// 图片一导出到单元格A1中
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 255,(short) 0, 0, (short) 0, 0);
//插入图片
patriarch.createPicture(anchor,workbook.addPicture(byteData, HSSFWorkbook.PICTURE_TYPE_JPEG));

3、公用方法

private static byte[] readInputStream(InputStream inStream) throws Exception{
	ByteArrayOutputStream outStream = new ByteArrayOutputStream();
	//创建一个Buffer字符串
	byte[] buffer = new byte[1024];
	//每次读取的字符串长度,如果为-1,代表全部读取完毕
	int len = 0;
	//使用一个输入流从buffer里把数据读取出来
	while( (len=inStream.read(buffer)) != -1 ){
		//用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度
		outStream.write(buffer, 0, len);
	}
	//关闭输入流
	inStream.close();
	//把outStream里的数据写入内存
	return outStream.toByteArray();
}

4、最后简单列出所引用的jar和HSSFClientAnchor介绍

jar如下:
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;

HSSFClientAnchor说明
new HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2);
dx1、dy1:起始单元格中的x,y坐标
dx2、dy2-结束单元格中的x,y坐标
一个单元格:x(宽)-(0-1023),y(高)-(0-255)
col1、row1-起始的单元格,下标从0开始
col2、row2-结束的单元格 ,下标从0开始
列举一个例子如下:
// 图片一导出到单元格I2中
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 255,(short) 0, 0, 0, 0);

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值