excel 导出时带图片

FileOutputStream fileOut = null; //创建一个文件输出流
       BufferedImage bufferImg = null; 
       
       String imgurl = request.getSession().getServletContext().getRealPath("/");
       imgurl += (String)queryForMap.get("imageAddress"); //存放图片的绝对路径
       ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); 
       String extend = (String)queryForMap.get("extend"); //文件的后缀名
        try {
            bufferImg = ImageIO.read(new File(imgurl));   
            ImageIO.write(bufferImg, extend, byteArrayOut); 
            //画图的顶级管理器,一个sheet只能获取一个(一定要注意这点) 
            XSSFDrawing patriarch = sheetAt.createDrawingPatriarch();   
            //anchor主要用于设置图片的属性 
            XSSFClientAnchor anchor = new XSSFClientAnchor(100,100, 100, 100,(short) 2, 0, (short) 4, 1);	
            anchor.setAnchorType(3);   
            //插入图片  
            if("jpg".equals(extend)) {
         	   patriarch.createPicture(anchor, work.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));  
            } else if("png".equals(extend)){
         	   patriarch.createPicture(anchor, work.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_PNG));  
            }
	
} catch (Exception e) {
	// TODO: handle exception
}

其中 XSSFClientAnchor(100,100, 100, 100,(short) 2, 0, (short) 4, 1) 的参数代表:
第一个参数:起始单元格的x偏移量,如例子中的100表示直线起始位置距A1单元格左侧的距离;
第二个参数:起始单元格的y偏移量,如例子中的100表示直线起始位置距A1单元格上侧的距离;
第三个参数:终止单元格的x偏移量,如例子中的100表示直线起始位置距C3单元格左侧的距离;
第四个参数:终止单元格的y偏移量,如例子中的100表示直线起始位置距C3单元格上侧的距离;
第五个参数:起始单元格列序号,从0开始计算;
第六个参数:起始单元格行序号,从0开始计算,如例子中第五个参数为2,第六个参数为0,就表示起始单元格为C1;
第七个参数:终止单元格列序号,从0开始计算;
第八个参数:终止单元格行序号,从0开始计算,如例子中第七个参数为4,第八个参数为1,就表示起始单元格为E2;

最终效果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值