POI插入图片时,原来的图片被清除的问题3.7中还没解决啊

来源:互联网 发布:天地伟业软件 编辑:程序博客网 时间:2024/05/16 01:46

POI3.7的测试版本已经发布了,一直对POI操作图片的处理比较关心.

以前的版本中如果模板文件中有图片,然后再代码中再新增加图片的话,原来的图片会被清除掉.这个在实际的应用中不能不是说一个很大的不便.

原文描述如下:

 

Images

Images are part of the drawing support. To add an image just call createPicture() on the drawing patriarch. At the time of writing the following types are supported:

  • PNG
  • JPG
  • DIB

It should be noted that any existing drawings may be erased once you add a image to a sheet.

    //create a new workbook    Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();    //add picture data to this workbook.    InputStream is = new FileInputStream("image1.jpeg");    byte[] bytes = IOUtils.toByteArray(is);    int pictureIdx = wb.addPicture(bytes, Workbook.PICTURE_TYPE_JPEG);    is.close();    CreationHelper helper = wb.getCreationHelper();    //create sheet    Sheet sheet = wb.createSheet();    // Create the drawing patriarch.  This is the top level container for all shapes.     Drawing drawing = sheet.createDrawingPatriarch();    //add a picture shape    ClientAnchor anchor = helper.createClientAnchor();    //set top-left corner of the picture,    //subsequent call of Picture#resize() will operate relative to it    anchor.setCol1(3);    anchor.setRow1(2);    Picture pict = drawing.createPicture(anchor, pictureIdx);    //auto-size picture relative to its top-left corner    pict.resize();    //save workbook    String file = "picture.xls";    if(wb instanceof XSSFWorkbook) file += "x";    FileOutputStream fileOut = new FileOutputStream(file);    wb.write(fileOut);    fileOut.close();        
原创粉丝点击