wb = writeOutAndReadBack(wb);
assertEquals(2, wb.getNumberOfSheets());
}
+
+ /**
+ * Problems with formula references to
+ * sheets via URLs
+ */
+ public void test45970() throws Exception {
+ HSSFWorkbook wb = openSample("FormulaRefs.xls");
+ assertEquals(3, wb.getNumberOfSheets());
+
+ HSSFSheet s = wb.getSheetAt(0);
+ HSSFRow row;
+
+ row = s.getRow(0);
+ assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(1).getCellType());
+ assertEquals(112.0, row.getCell(1).getNumericCellValue());
+
+ row = s.getRow(1);
+ assertEquals(Cell.CELL_TYPE_FORMULA, row.getCell(1).getCellType());
+ assertEquals("B1", row.getCell(1).getCellFormula());
+ assertEquals(112.0, row.getCell(1).getNumericCellValue());
+
+ row = s.getRow(2);
+ assertEquals(Cell.CELL_TYPE_FORMULA, row.getCell(1).getCellType());
+ assertEquals("Sheet1!B1", row.getCell(1).getCellFormula());
+ assertEquals(112.0, row.getCell(1).getNumericCellValue());
+
+ row = s.getRow(3);
+ assertEquals(Cell.CELL_TYPE_FORMULA, row.getCell(1).getCellType());
+ assertEquals("[Formulas2.xls]Sheet1!B2", row.getCell(1).getCellFormula());
+ assertEquals(112.0, row.getCell(1).getNumericCellValue());
+
+ row = s.getRow(4);
+ assertEquals(Cell.CELL_TYPE_FORMULA, row.getCell(1).getCellType());
+ assertEquals("'[\u0005$http://gagravarr.org/FormulaRefs.xls]Sheet1'!B1", row.getCell(1).getCellFormula());
+ assertEquals(112.0, row.getCell(1).getNumericCellValue());
+
+ // Change 4
+ row.getCell(1).setCellFormula("'[\u0005$http://gagravarr.org/FormulaRefs2.xls]Sheet1'!B2");
+ row.getCell(1).setCellValue(123.0);
+
+ // Add 5
+ row = s.createRow(5);
+ row.createCell(1, Cell.CELL_TYPE_FORMULA);
+ row.getCell(1).setCellFormula("'[\u0005$http://example.com/FormulaRefs.xls]Sheet1'!B1");
+ row.getCell(1).setCellValue(234.0);
+
+
+ // Re-test
+ wb = writeOutAndReadBack(wb);
+ s = wb.getSheetAt(0);
+
+ row = s.getRow(0);
+ assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(1).getCellType());
+ assertEquals(112.0, row.getCell(1).getNumericCellValue());
+
+ row = s.getRow(1);
+ assertEquals(Cell.CELL_TYPE_FORMULA, row.getCell(1).getCellType());
+ assertEquals("B1", row.getCell(1).getCellFormula());
+ assertEquals(112.0, row.getCell(1).getNumericCellValue());
+
+ row = s.getRow(2);
+ assertEquals(Cell.CELL_TYPE_FORMULA, row.getCell(1).getCellType());
+ assertEquals("Sheet1!B1", row.getCell(1).getCellFormula());
+ assertEquals(112.0, row.getCell(1).getNumericCellValue());
+
+ row = s.getRow(3);
+ assertEquals(Cell.CELL_TYPE_FORMULA, row.getCell(1).getCellType());
+ assertEquals("[Formulas2.xls]Sheet1!B2", row.getCell(1).getCellFormula());
+ assertEquals(112.0, row.getCell(1).getNumericCellValue());
+
+// TODO - Fix these so they work...
+if(1==2) {
+ row = s.getRow(4);
+ assertEquals(Cell.CELL_TYPE_FORMULA, row.getCell(1).getCellType());
+ assertEquals("'[\u0005$http://gagravarr.org/FormulaRefs2.xls]Sheet1'!B2", row.getCell(1).getCellFormula());
+ assertEquals(123.0, row.getCell(1).getNumericCellValue());
+
+ row = s.getRow(5);
+ assertEquals(Cell.CELL_TYPE_FORMULA, row.getCell(1).getCellType());
+ assertEquals("'[\u0005$http://example.com/FormulaRefs.xls]Sheet1'!B1", row.getCell(1).getCellFormula());
+ assertEquals(234.0, row.getCell(1).getNumericCellValue());
+}
+ }
}