https://issues.apache.org/bugzilla/show_bug.cgi?id=52504
Yegor Kozlov <[email protected]> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |WONTFIX OS/Version| |All --- Comment #1 from Yegor Kozlov <[email protected]> 2012-02-03 11:23:43 UTC --- The problem is that XSSF interprets dx and dy offsets differently than HSSF. In HSSF dx is a fraction of cell width in units of 1/1024. anchor.setDx1(400) sets the offset to approximately 40% of the cell width (400/1024) and anchor.setDx2(655) sets the second dx offset to 65% of the cell. that is, the image is located in the middle of the cell between 40% and 65% of the width. In XSSF all dx and dy offsets are set in EMUS (one pixel is 9525 EMUs) and the equivalent code to anchor your image is as follows: anchor.setDx1(25*XSSFShape.EMU_PER_PIXEL); anchor.setDx2(41*XSSFShape.EMU_PER_PIXEL); anchor.setDy1(1*XSSFShape.EMU_PER_PIXEL); anchor.setDy2(14*XSSFShape.EMU_PER_PIXEL); Setting dx and dy offsets is not portable between HSSF and XSSF. Change your code to set them in pixels. If both .xls and .xlsx should be supported then add a 'if' clause for each format: if(wb instanceof HSSFWorkbook){ anchor.setDx1(400); anchor.setDx2(655); anchor.setDy1(10); anchor.setDy2(200); } else { anchor.setDx1(25*XSSFShape.EMU_PER_PIXEL); anchor.setDx2(41*XSSFShape.EMU_PER_PIXEL); anchor.setDy1(1*XSSFShape.EMU_PER_PIXEL); anchor.setDy2(14*XSSFShape.EMU_PER_PIXEL); } Cheers, Yegor -- 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]
