JAVA POI Excel 導出圖片


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM