如何将网上的图片导出到excle
首先导出到excle必须先要将图片以流的形式读取出来,你肯定想到了FileInputStream,但是这只能读取本地文件系统的,不能读取网上的。可以试试这个方法亲测有效:
public static InputStream getInputStream(String destUrl) {
InputStream inputStream = null;
URLConnection urlConnection = null;
URL url = null;
try {
url = new URL(destUrl);
urlConnection = url.openConnection();
inputStream = urlConnection.getInputStream();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return inputStream;
}
只需要将图片url填写进去就可以返回一个流,接下来就可以往excle填写了。
下面是完整代码:
public static void imgInsertExcel(String imgPath,HSSFWorkbook wb,HSSFSheet sheet,int cellNum_l,int rowNum_l,int cellNum_r,int rowNum_r) {
BufferedImage bufferImg = null;
ByteArrayOutputStream byteArrayOut =null;
InputStream is=null;
URLConnection urlConnection = null;
URL url = null;
try {
byteArrayOut = new ByteArrayOutputStream();
url = new URL(ZTBConstants.IMGE_PATH+imgPath);
urlConnection = url.openConnection();
is=urlConnection.getInputStream();
bufferImg = ImageIO.read(is);
ImageIO.write(bufferImg, "png", byteArrayOut);
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 0, 0,(short) cellNum_l, rowNum_l, (short) cellNum_r, rowNum_r);
patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
} catch (Exception e) {
e.printStackTrace();
}finally{
if(byteArrayOut != null){
try {
byteArrayOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(bufferImg != null){
try {
bufferImg.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}