public class ExcelUtils { public static void main(String[] args) throws IOException { FileOutputStream fileOut = null; //先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray String imgUrl = "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg2.3lian.com%2F2014cf%2Ff2%2F59%2Fd%2F103.jpg"; URL url = new URL(imgUrl); //获取文件后缀名 String suffix = imgUrl.substring(imgUrl.lastIndexOf(".") + 1); BufferedImage bufferImg = ImageIO.read(url); //注意:以本地的方式图片、注释上面四行有效代码 换成下面两行 // BufferedImage bufferImg = null; // bufferImg = ImageIO.read(new File("D:/test.jpg")); ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); // String suffix = (String) list.get(0).get("imgtype"); // byte[] bytes = input2byte(list.get(0).getInputStream()); // BufferedImage bufferImg = ImageIO.read(new ByteArrayInputStream(bytes)); // if ("png".equals(suffix) || "PNG".equals(suffix) ) { // ImageIO.write(bufferImg, "png", byteArrayOut); // }else if("jpg".equals(suffix) || "JPG".equals(suffix)){ // ImageIO.write(bufferImg, "jpg", byteArrayOut); // }else{ // continue; // } //这里要注意formatName要缓存后缀名 ImageIO.write(bufferImg, suffix, byteArrayOut); HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet1 = workbook.createSheet("test picture"); sheet1.setDefaultColumnWidth((short)20); sheet1.setDefaultRowHeight((short)2000); //画图的顶级管理器,一个sheet只能获取一个(一定要注意这点) HSSFPatriarch patriarch = sheet1.createDrawingPatriarch(); for(int i =0;i<10;i++){ // 判断下一张图片位置 // anchor主要用于设置图片的属性 // * 前四个参数是控制图片在单元格的位置,分别是图片距离单元格left,top,right,bottom的像素距离 HSSFClientAnchor anchor = new HSSFClientAnchor ( 0, //x缩放 0, // y缩放 1023, //最大1023 255, //最大255 (short) 4, //于下下个参数进行定位 0开始 i, //在第几行 (short) 4, //宽度占几格 0开始 i //第几列 ); // anchor.setAnchorType(3); //插入图片 patriarch.createPicture(anchor, workbook.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); } fileOut = new FileOutputStream("D:/测试Excel.xls"); // 写入excel文件 workbook.write(fileOut); System.out.println("----Excel文件已生成------"); } }