Summary: | Formula cell and area references with rows >= 32768 do not work | ||
---|---|---|---|
Product: | POI | Reporter: | Richard Evans <richard.evans> |
Component: | HSSF | Assignee: | POI Developers List <dev> |
Status: | RESOLVED FIXED | ||
Severity: | major | ||
Priority: | P2 | ||
Version: | 3.0-FINAL | ||
Target Milestone: | --- | ||
Hardware: | All | ||
OS: | All | ||
Attachments: | svn diff of 23 changed files |
Description
Richard Evans
2008-03-05 06:01:21 UTC
Turns out to be a big change. There's many places beyond the two pointed out where 16 unsigned values are represented with java primitive shorts. Here are two test cases that identify these problems: public void testSetFormulaWithRowBeyond32768_Bug44539() { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); wb.setSheetName(0, "Sheet1"); HSSFRow row = sheet.createRow(0); HSSFCell cell = row.createCell((short)0); cell.setCellFormula("SUM(A32769:A32770)"); if("SUM(A-32767:A-32766)".equals(cell.getCellFormula())) { fail("Identified bug 44539"); } assertEquals("SUM(A32769:A32770)", cell.getCellFormula()); } public void testEvaluateFormulaWithRowBeyond32768_Bug44539() { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); wb.setSheetName(0, "Sheet1"); HSSFRow row = sheet.createRow(0); HSSFCell cell = row.createCell((short)0); cell.setCellFormula("SUM(A32769:A32770)"); // put some values in the cells to make the evaluation more interesting sheet.createRow(32768).createCell((short)0).setCellValue(31); sheet.createRow(32769).createCell((short)0).setCellValue(11); HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(sheet, wb); fe.setCurrentRow(row); CellValue result; try { result = fe.evaluate(cell); } catch (FormulaParseException e) { if(e.getMessage().equals("Found reference to named range \"A\", but that named range wasn't defined!")) { fail("Identifed bug 44539"); } throw new RuntimeException(e); } assertEquals(HSSFCell.CELL_TYPE_NUMERIC, result.getCellType()); assertEquals(42.0, result.getNumberValue(), 0.0); } // Created attachment 21633 [details]
svn diff of 23 changed files
Thanks for the patch Josh. Needed a little bit of tweaking to not break the whole-column stuff, but now applied to svn trunk (In reply to comment #3) fix was applied in svn r634630 |