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文件已生成------"); } }

