如何将图片下载到Excel文件

问题描述:
        
Excel不支持foreach模板文件中的图片。(注:不懂加我QQ哦,QQ:1135242369)
适用情况:
       随foreach中 List对象的Size添加的图片个数。
解决办法:

       在Java 程序里加入该图片,以便foreach。
方法一:

        ①将所要下载的图片放入Tomcat根目录

           例:D:\apache-tomcat-7.0.56\nsj_logo.png
       ②在程序中加入以下代码

String fileName="nsj_logo.png";
File logoFile= new File(logo_path_2);
    if (!logoFile_2.exists()) {
        logo_path_2 = "";
    }
   //我存储数据的类型List<Map<String,Object>>
 map.put("pic_path", logoFile);
在Excel文件中:
    加入图片的格栅#picture(${detail.pic_path!} cell=7 row=4)
    解释:
        detail:在我做的项目中,一条记录就是一页,detail指当前对象
        pic_path:在后台中设置的map key值
        cell、row:图片的宽和高;
方法二:
思想:在程序内部以流的方式将图片写入Excel文件。
实现:
 Workbook wb =null;
	 //获取数据部分的代码省略
	 wb = template.process(fileInputStream, "处理后的数据");
	 Sheet sheet = wb.getSheet("Sheet 名");
         Drawing pr = sheet.createDrawingPatriarch();
	 BufferedImage bufferImg = null;
         byte[] logo_image = null;
         int top_row=19;
         int column=24;
	 //每隔51行加入一张图片
	 int page_row = 51;
         //Begin
	 //context 是指ServletContext,获得Servlet的上下文信息
         bufferImg = ImageIO.read(new File(context.getRealPath("fileName")));
         ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
         BufferedImage setImgSize=new BufferedImage(93, 58, BufferedImage.TYPE_INT_RGB);
         setImgSize.getGraphics().drawImage(bufferImg, 0, 0,93, 58, null);
         ImageIO.write(setImgSize, "png", byteArrayOut);
         logo_image=byteArrayOut.toByteArray();
         if (pr != null && barcode_image != null && barcode_image.length > 0) {
	     //在我做的项目中当前代码(从Start到End)都是放置在一个for循环里,每循环一次就增加一个图片,而不是直接将图片写入文件内
             AbsPoiUtil.addPicture(wb, pr, sheet, top_row, column, logo_image, HSSFWorkbook.PICTURE_TYPE_PNG, 4, 3f);
         }
         top_row+=page_row;
	 //End
总结:个人感觉是方法一简单,不需要设置太多,但是需要将图片放到服务器的根目录下。方法二?项目经理就说了一句:“没这么夸张吧”。哈哈哈
 
  
 
  

猜你喜欢

转载自blog.csdn.net/Dreamlate_Spider/article/details/77879647