如何将网上/服务器的图片导出到excle

如何将网上的图片导出到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填写了。

下面是完整代码:

 /**
     * @Title: imgInsertExcel
     * @Description: excel表插入图片
     * @Author lixiaochao
     * @DateTime 2019年11月27日 下午9:59:54
     * 
     */
    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;
       //先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray    
       try {  
           byteArrayOut = new ByteArrayOutputStream(); 
           url = new URL(ZTBConstants.IMGE_PATH+imgPath);
           urlConnection = url.openConnection();
           //去掉空格,各种路径不支持的字符,如%等
           //imgPath= URLDecoder.decode(ZTBConstants.IMGE_PATH+imgPath,"utf-8");
           //String suffix = imgPath.substring(imgPath.lastIndexOf(".") + 1);
           is=urlConnection.getInputStream();
           bufferImg = ImageIO.read(is);     
           ImageIO.write(bufferImg, "png", byteArrayOut);  
           //画图的顶级管理器,一个sheet只能获取一个(一定要注意这点)  
           HSSFPatriarch patriarch = sheet.createDrawingPatriarch();     
           /**C:\Users\Administrator\Desktop\plant
            * anchor主要用于设置图片的属性 
            * 该构造函数有8个参数
            * 前四个参数是控制图片在单元格的位置,分别是图片距离单元格left,top,right,bottom的像素距离
            * 后四个参数,前连个表示图片左上角所在的cellNum和 rowNum,后天个参数对应的表示图片右下角所在的cellNum和 rowNum,
            * excel中的前两个cellNum和rowNum的index都是从0开始的,后两个指的是数量
            */ 
           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();  
        	   }  
           }  
       }  
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值