java导出excel(数据+网络图片)

        String imgUrl = "图片地址"

        drawPictureInfoExcel(wb,patriarch,i+1, imgUrl, workbook);//i+1代表当前的行

    } 

    //输出Excel文件 

    output=new FileOutputStream(new File("c:\\"+workbook+".xls")); 

    // 写入excel文件 

    wb.write(output);

    System.out.println("----Excle文件已生成------");

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

// 关闭输出流

if(output != null){

                try {

                output.close();

              } catch (IOException e) {

                e.printStackTrace();

              }

            }

        }

}

    private void drawPictureInfoExcel(HSSFWorkbook wb,HSSFPatriarch patriarch,int rowIndex,String pictureUrl, String workbook)

    {

       //rowIndex代表当前行

        try {

             if(StringUtils.isNotBlank(pictureUrl)) {

                        URL url = new URL(pictureUrl); 

                        //打开链接 

                        HttpURLConnection conn = (HttpURLConnection)url.openConnection(); 

                        //设置请求方式为"GET" 

                        conn.setRequestMethod("GET"); 

                        //超时响应时间为5秒 

                        conn.setConnectTimeout(5 * 1000); 

                        //通过输入流获取图片数据 

                        InputStream inStream = conn.getInputStream(); 

                        //得到图片的二进制数据,以二进制封装得到数据,具有通用性 

                        byte[] data = readInputStream(inStream); 

                        //anchor主要用于设置图片的属性 

//                        HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 250,(short) 0, rowIndex, (short) 0, rowIndex);


                        HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 250,(short) 6, rowIndex, (short) 6, rowIndex);


                        //Sets the anchor type (图片在单元格的位置)

                        //0 = Move and size with Cells, 2 = Move but don't size with cells, 3 = Don't move or size with cells.

                        anchor.setAnchorType(3);   

                        //插入图片

                        patriarch.createPicture(anchor, wb.addPicture(data, HSSFWorkbook.PICTURE_TYPE_PNG));


            }

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

    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(); 

    }

你可能感兴趣的:(java导出excel(数据+网络图片))