代码改变世界

POI Excel 13 添加图片

2012-07-22 18:55  java线程例子  阅读(1192)  评论(0编辑  收藏  举报

@author YHC

添加图片:

image是drawing其中的一部分,添加图片需要调用createPicture(),在写入文件的时候需要注意,支持一下的类型:

PNG,JPG,DIB,应该值得注意的是,一旦你添加图片到这个工作簿中,任何现有的图片可能被擦除.

该示例所需jar,以及下载的地址和页面:

commons-codec-1.6.jar下载页面:

commons-codec-1.6-bin.zip点击直接下载:

下图就是该例子需要的jar以及图片放置的路径:


代码:

            //创建Excel
	    Workbook wb = new HSSFWorkbook(); //or new HSSFWorkbook();
	    //添加图片信息到这个Excel中  
	    InputStream is = new FileInputStream("rose.jpg");
	    //读取图片文件得到字节
	    byte[] bytes = IOUtils.toByteArray(is);
	    //向Excel添加一张图片,并返回该图片在Excel中的图片集合中的下标
	    int pictureIdx = wb.addPicture(bytes, Workbook.PICTURE_TYPE_JPEG);
	    //关闭流
	    is.close();
	    //工具类
	    CreationHelper helper = wb.getCreationHelper();
	    //创建工作簿
	    Sheet sheet = wb.createSheet();
	    //创建一个绘图对象  
	    Drawing drawing = sheet.createDrawingPatriarch();
	    //添加一个图片
	    //创建锚点
	    ClientAnchor anchor = helper.createClientAnchor();
	    //设置图片的左上角 
	    //接下来调用Picture#resize()设置图片相对于设置的左上角的位置
	    anchor.setCol1(3);//从0开始 第3列
	    anchor.setRow1(2);//从0开始 第2行
	    //根据锚点和图片下标创建并绘制一张图片
	    Picture pict = drawing.createPicture(anchor, pictureIdx);
	    //相对于图片的左上角自动适应大小
	    //===========>>>>>>>>>[注意]<<<<<<=================
	    //picture.resize() 仅仅只是针对这两种类型的图片 JPEG 和 PNG. 
	    //其他格式暂时不支持
	    pict.resize();
	    //写入文件
	    String file = "picture.xls";
	    FileOutputStream fileOut = new FileOutputStream(file);
	    wb.write(fileOut);

运行之后的效果图:



如果以上有书写或者理解错误的地方,请大家指出,thanks!