https://issues.apache.org/bugzilla/show_bug.cgi?id=51459

             Bug #: 51459
           Summary: Image not added in HSSFWorkbook
           Product: POI
           Version: 3.8-dev
          Platform: PC
            Status: NEW
          Severity: normal
          Priority: P2
         Component: HSSF
        AssignedTo: [email protected]
        ReportedBy: [email protected]
    Classification: Unclassified


Created attachment 27235
  --> https://issues.apache.org/bugzilla/attachment.cgi?id=27235
Excel file for reproducing the issue

Trying to add an image to a worksheet does not actually work in the case of the
attached Excel file (repro.xls). There is no error message - the image just
won't end up on the worksheet. I could pin the problem down to the second
worksheet (note, the image is to be added to first one). If I delete the second
worksheet, it works. Originally, there were many more worksheets in the
workbook and I tried deleting any of them in succession to detect where the
issue is and it seems that exactly the remaining (worksheet 2 in repro.xls) is
causing the grief.

The following is the code to reproduce the issue:

File f1 = new File("repro.xls");
        File f2 = new File("earthquake.jpg");

        HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(f1));
        InputStream is = new FileInputStream(f2);
        byte[] bytes = IOUtils.toByteArray(is);
        int imageIndex = wb.addPicture(bytes,
org.apache.poi.ss.usermodel.Workbook.PICTURE_TYPE_JPEG);
        is.close();

        Name cname = wb.getName("Test");
        Sheet sheet = wb.getSheet(cname.getSheetName());

        AreaReference aref = new AreaReference(cname.getRefersToFormula());
        CellReference topLeft = aref.getFirstCell();
        CellReference bottomRight = aref.getLastCell();

        Drawing drawing = null;
        drawing = ((HSSFSheet)sheet).getDrawingPatriarch();
        if(drawing == null) {
            drawing = sheet.createDrawingPatriarch();
        }

        CreationHelper helper = wb.getCreationHelper();
        ClientAnchor anchor = helper.createClientAnchor();
        anchor.setRow1(topLeft.getRow());
        anchor.setCol1(topLeft.getCol());
        anchor.setRow2(bottomRight.getRow() + 1);
        anchor.setCol2(bottomRight.getCol() + 1);
        anchor.setAnchorType(ClientAnchor.DONT_MOVE_AND_RESIZE);

        drawing.createPicture(anchor, imageIndex);

        FileOutputStream fos = new FileOutputStream(f1, false);
        wb.write(fos);
        fos.close();


I'm using POI 3.8-beta3 with a 64-bit JDK 1.6.0_20 on Windows 7 64-bit.

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to