现在的位置: 首页 > 综合 > 正文

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

2013年10月02日 ⁄ 综合 ⁄ 共 1255字 ⁄ 字号 评论关闭
文章目录

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();

        

抱歉!评论已关闭.