diff --git a/src/java/org/apache/poi/hssf/model/FormulaParser.java b/src/java/org/apache/poi/hssf/model/FormulaParser.java index d1f28643b..b89480e3c 100644 --- a/src/java/org/apache/poi/hssf/model/FormulaParser.java +++ b/src/java/org/apache/poi/hssf/model/FormulaParser.java @@ -25,6 +25,7 @@ import java.util.Stack; import org.apache.poi.hssf.record.formula.*; import org.apache.poi.hssf.record.formula.function.FunctionMetadata; import org.apache.poi.hssf.record.formula.function.FunctionMetadataRegistry; +import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.AreaReference; import org.apache.poi.hssf.util.CellReference; @@ -112,7 +113,7 @@ public final class FormulaParser { } public static Ptg[] parse(String formula, HSSFWorkbook workbook, int formulaType) { - FormulaParser fp = new FormulaParser(formula, workbook); + FormulaParser fp = HSSFFormulaEvaluator.getUnderlyingParser(workbook, formula); fp.parse(); return fp.getRPNPtg(formulaType); } @@ -816,7 +817,7 @@ end; /** * API call to execute the parsing of the formula - * @deprecated use Ptg[] FormulaParser.parse(String, HSSFWorkbook) directly + * @deprecated use {@link #parse(String, HSSFWorkbook)} directly */ public void parse() { pointer=0; diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java b/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java index fd98602f6..f3802a210 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java @@ -48,6 +48,7 @@ import org.apache.poi.hssf.record.TextObjectRecord; import org.apache.poi.hssf.record.UnicodeString; import org.apache.poi.hssf.record.aggregates.FormulaRecordAggregate; import org.apache.poi.hssf.record.formula.Ptg; +import org.apache.poi.hssf.record.formula.eval.ErrorEval; /** * High level representation of a cell in a row of a spreadsheet. @@ -69,59 +70,24 @@ import org.apache.poi.hssf.record.formula.Ptg; */ public final class HSSFCell { - /** - * Numeric Cell type (0) - * @see #setCellType(int) - * @see #getCellType() - */ - - public final static int CELL_TYPE_NUMERIC = 0; - - /** - * String Cell type (1) - * @see #setCellType(int) - * @see #getCellType() - */ - - public final static int CELL_TYPE_STRING = 1; - - /** - * Formula Cell type (2) - * @see #setCellType(int) - * @see #getCellType() - */ - - public final static int CELL_TYPE_FORMULA = 2; - - /** - * Blank Cell type (3) - * @see #setCellType(int) - * @see #getCellType() - */ - - public final static int CELL_TYPE_BLANK = 3; - - /** - * Boolean Cell type (4) - * @see #setCellType(int) - * @see #getCellType() - */ - - public final static int CELL_TYPE_BOOLEAN = 4; - - /** - * Error Cell type (5) - * @see #setCellType(int) - * @see #getCellType() - */ - - public final static int CELL_TYPE_ERROR = 5; + /** Numeric Cell type (0) @see #setCellType(int) @see #getCellType() */ + public final static int CELL_TYPE_NUMERIC = 0; + /** String Cell type (1) @see #setCellType(int) @see #getCellType() */ + public final static int CELL_TYPE_STRING = 1; + /** Formula Cell type (2) @see #setCellType(int) @see #getCellType() */ + public final static int CELL_TYPE_FORMULA = 2; + /** Blank Cell type (3) @see #setCellType(int) @see #getCellType() */ + public final static int CELL_TYPE_BLANK = 3; + /** Boolean Cell type (4) @see #setCellType(int) @see #getCellType() */ + public final static int CELL_TYPE_BOOLEAN = 4; + /** Error Cell type (5) @see #setCellType(int) @see #getCellType() */ + public final static int CELL_TYPE_ERROR = 5; + public final static short ENCODING_UNCHANGED = -1; public final static short ENCODING_COMPRESSED_UNICODE = 0; public final static short ENCODING_UTF_16 = 1; private int cellType; private HSSFRichTextString stringValue; - private short encoding = ENCODING_UNCHANGED; private HSSFWorkbook book; private Sheet sheet; private CellValueRecordInterface record; @@ -191,9 +157,7 @@ public final class HSSFCell { * @param sheet - Sheet record of the sheet containing this cell * @param cval - the Cell Value Record we wish to represent */ - protected HSSFCell(HSSFWorkbook book, Sheet sheet, int row, - CellValueRecordInterface cval) - { + protected HSSFCell(HSSFWorkbook book, Sheet sheet, CellValueRecordInterface cval) { record = cval; cellType = determineType(cval); stringValue = null; @@ -265,6 +229,12 @@ public final class HSSFCell { return book.getWorkbook(); } + /** + * @return the (zero based) index of the row containing this cell + */ + public int getRowIndex() { + return record.getRow(); + } /** * Set the cell's number within the row (0 based). * @param num short the cell number @@ -975,13 +945,13 @@ public final class HSSFCell { * Errors are displayed as #ERR<errIdx> */ public String toString() { - switch (getCellType()) { + switch (getCellType()) { case CELL_TYPE_BLANK: return ""; case CELL_TYPE_BOOLEAN: return getBooleanCellValue()?"TRUE":"FALSE"; case CELL_TYPE_ERROR: - return "#ERR"+getErrorCellValue(); + return ErrorEval.getText((( BoolErrRecord ) record).getErrorValue()); case CELL_TYPE_FORMULA: return getCellFormula(); case CELL_TYPE_NUMERIC: @@ -989,7 +959,7 @@ public final class HSSFCell { if (HSSFDateUtil.isCellDateFormatted(this)) { DateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy"); return sdf.format(getDateCellValue()); - }else { + } else { return getNumericCellValue() + ""; } case CELL_TYPE_STRING: diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java b/src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java index c8214675f..fac66b2cc 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java @@ -1,19 +1,19 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ package org.apache.poi.hssf.usermodel; @@ -27,7 +27,6 @@ import org.apache.poi.hssf.model.FormulaParser; import org.apache.poi.hssf.model.Workbook; import org.apache.poi.hssf.record.formula.Area3DPtg; import org.apache.poi.hssf.record.formula.AreaPtg; -import org.apache.poi.hssf.record.formula.AttrPtg; import org.apache.poi.hssf.record.formula.BoolPtg; import org.apache.poi.hssf.record.formula.ControlPtg; import org.apache.poi.hssf.record.formula.IntPtg; @@ -37,7 +36,6 @@ import org.apache.poi.hssf.record.formula.NamePtg; import org.apache.poi.hssf.record.formula.NameXPtg; import org.apache.poi.hssf.record.formula.NumberPtg; import org.apache.poi.hssf.record.formula.OperationPtg; -import org.apache.poi.hssf.record.formula.ParenthesisPtg; import org.apache.poi.hssf.record.formula.Ptg; import org.apache.poi.hssf.record.formula.Ref3DPtg; import org.apache.poi.hssf.record.formula.RefPtg; @@ -93,17 +91,20 @@ public class HSSFFormulaEvaluator { } - protected HSSFRow row; - protected HSSFSheet sheet; - protected HSSFWorkbook workbook; + protected HSSFSheet _sheet; + protected HSSFWorkbook _workbook; public HSSFFormulaEvaluator(HSSFSheet sheet, HSSFWorkbook workbook) { - this.sheet = sheet; - this.workbook = workbook; + _sheet = sheet; + _workbook = workbook; } + /** + * Does nothing + * @deprecated - not needed, since the current row can be derived from the cell + */ public void setCurrentRow(HSSFRow row) { - this.row = row; + // do nothing } @@ -142,7 +143,7 @@ public class HSSFFormulaEvaluator { retval.setErrorValue(cell.getErrorCellValue()); break; case HSSFCell.CELL_TYPE_FORMULA: - retval = getCellValueForEval(internalEvaluate(cell, row, sheet, workbook)); + retval = getCellValueForEval(internalEvaluate(cell, _sheet, _workbook)); break; case HSSFCell.CELL_TYPE_NUMERIC: retval = new CellValue(HSSFCell.CELL_TYPE_NUMERIC); @@ -180,7 +181,7 @@ public class HSSFFormulaEvaluator { if (cell != null) { switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_FORMULA: - CellValue cv = getCellValueForEval(internalEvaluate(cell, row, sheet, workbook)); + CellValue cv = getCellValueForEval(internalEvaluate(cell, _sheet, _workbook)); switch (cv.getCellType()) { case HSSFCell.CELL_TYPE_BOOLEAN: cell.setCellValue(cv.getBooleanValue()); @@ -225,7 +226,7 @@ public class HSSFFormulaEvaluator { if (cell != null) { switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_FORMULA: - CellValue cv = getCellValueForEval(internalEvaluate(cell, row, sheet, workbook)); + CellValue cv = getCellValueForEval(internalEvaluate(cell, _sheet, _workbook)); switch (cv.getCellType()) { case HSSFCell.CELL_TYPE_BOOLEAN: cell.setCellType(HSSFCell.CELL_TYPE_BOOLEAN); @@ -270,7 +271,6 @@ public class HSSFFormulaEvaluator { for (Iterator rit = sheet.rowIterator(); rit.hasNext();) { HSSFRow r = (HSSFRow)rit.next(); - evaluator.setCurrentRow(r); for (Iterator cit = r.cellIterator(); cit.hasNext();) { HSSFCell c = (HSSFCell)cit.next(); @@ -324,8 +324,8 @@ public class HSSFFormulaEvaluator { * else a runtime exception will be thrown somewhere inside the method. * (Hence this is a private method.) */ - private static ValueEval internalEvaluate(HSSFCell srcCell, HSSFRow srcRow, HSSFSheet sheet, HSSFWorkbook workbook) { - int srcRowNum = srcRow.getRowNum(); + private static ValueEval internalEvaluate(HSSFCell srcCell, HSSFSheet sheet, HSSFWorkbook workbook) { + int srcRowNum = srcCell.getRowIndex(); short srcColNum = srcCell.getCellNum(); @@ -392,7 +392,7 @@ public class HSSFFormulaEvaluator { int rowIx = refPtg.getRow(); HSSFRow row = sheet.getRow(rowIx); HSSFCell cell = (row != null) ? row.getCell(colIx) : null; - stack.push(createRef2DEval(refPtg, cell, row, sheet, workbook)); + stack.push(createRef2DEval(refPtg, cell, sheet, workbook)); } else if (ptg instanceof Ref3DPtg) { Ref3DPtg refPtg = (Ref3DPtg) ptg; @@ -402,7 +402,7 @@ public class HSSFFormulaEvaluator { HSSFSheet xsheet = workbook.getSheetAt(wb.getSheetIndexFromExternSheetIndex(refPtg.getExternSheetIndex())); HSSFRow row = xsheet.getRow(rowIx); HSSFCell cell = (row != null) ? row.getCell(colIx) : null; - stack.push(createRef3DEval(refPtg, cell, row, xsheet, workbook)); + stack.push(createRef3DEval(refPtg, cell, xsheet, workbook)); } else if (ptg instanceof AreaPtg) { AreaPtg ap = (AreaPtg) ptg; @@ -592,7 +592,7 @@ public class HSSFFormulaEvaluator { case HSSFCell.CELL_TYPE_STRING: return new StringEval(cell.getRichStringCellValue().getString()); case HSSFCell.CELL_TYPE_FORMULA: - return internalEvaluate(cell, row, sheet, workbook); + return internalEvaluate(cell, sheet, workbook); case HSSFCell.CELL_TYPE_BOOLEAN: return BoolEval.valueOf(cell.getBooleanCellValue()); case HSSFCell.CELL_TYPE_BLANK: @@ -608,7 +608,7 @@ public class HSSFFormulaEvaluator { * Non existent cells are treated as RefEvals containing BlankEval. */ private static Ref2DEval createRef2DEval(RefPtg ptg, HSSFCell cell, - HSSFRow row, HSSFSheet sheet, HSSFWorkbook workbook) { + HSSFSheet sheet, HSSFWorkbook workbook) { if (cell == null) { return new Ref2DEval(ptg, BlankEval.INSTANCE); } @@ -619,7 +619,7 @@ public class HSSFFormulaEvaluator { case HSSFCell.CELL_TYPE_STRING: return new Ref2DEval(ptg, new StringEval(cell.getRichStringCellValue().getString())); case HSSFCell.CELL_TYPE_FORMULA: - return new Ref2DEval(ptg, internalEvaluate(cell, row, sheet, workbook)); + return new Ref2DEval(ptg, internalEvaluate(cell, sheet, workbook)); case HSSFCell.CELL_TYPE_BOOLEAN: return new Ref2DEval(ptg, BoolEval.valueOf(cell.getBooleanCellValue())); case HSSFCell.CELL_TYPE_BLANK: @@ -634,7 +634,7 @@ public class HSSFFormulaEvaluator { * create a Ref3DEval for Ref3DPtg. */ private static Ref3DEval createRef3DEval(Ref3DPtg ptg, HSSFCell cell, - HSSFRow row, HSSFSheet sheet, HSSFWorkbook workbook) { + HSSFSheet sheet, HSSFWorkbook workbook) { if (cell == null) { return new Ref3DEval(ptg, BlankEval.INSTANCE); } @@ -644,7 +644,7 @@ public class HSSFFormulaEvaluator { case HSSFCell.CELL_TYPE_STRING: return new Ref3DEval(ptg, new StringEval(cell.getRichStringCellValue().getString())); case HSSFCell.CELL_TYPE_FORMULA: - return new Ref3DEval(ptg, internalEvaluate(cell, row, sheet, workbook)); + return new Ref3DEval(ptg, internalEvaluate(cell, sheet, workbook)); case HSSFCell.CELL_TYPE_BOOLEAN: return new Ref3DEval(ptg, BoolEval.valueOf(cell.getBooleanCellValue())); case HSSFCell.CELL_TYPE_BLANK: @@ -756,7 +756,7 @@ public class HSSFFormulaEvaluator { * @param workbook */ void inspectPtgs(String formula) { - FormulaParser fp = new FormulaParser(formula, workbook); + FormulaParser fp = new FormulaParser(formula, _workbook); fp.parse(); Ptg[] ptgs = fp.getRPNPtg(); System.out.println(""); diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFRow.java b/src/java/org/apache/poi/hssf/usermodel/HSSFRow.java index 51d18bdb5..1450bf487 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFRow.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFRow.java @@ -190,14 +190,10 @@ public final class HSSFRow implements Comparable { * @param cell low level cell to create the high level representation from * @return HSSFCell representing the low level record passed in */ - - protected HSSFCell createCellFromRecord(CellValueRecordInterface cell) - { - HSSFCell hcell = new HSSFCell(book, sheet, getRowNum(), cell); + protected HSSFCell createCellFromRecord(CellValueRecordInterface cell) { + HSSFCell hcell = new HSSFCell(book, sheet, cell); addCell(hcell); - - // sheet.addValueRecord(getRowNum(),cell.getCellValueRecord()); return hcell; } @@ -304,15 +300,7 @@ public final class HSSFRow implements Comparable { } /** - * Get the hssfcell representing a given column (logical cell) - * 0-based. If you ask for a cell that is not defined then - * you get a null, unless you have set a different - * {@link MissingCellPolicy} on the base workbook. - * Short method signature provided to retain binary - * compatibility. - * - * @param cellnum 0 based column number - * @return HSSFCell representing that column or null if undefined. + * @deprecated (Aug 2008) use {@link #getCell(int)} */ public HSSFCell getCell(short cellnum) { int ushortCellNum = cellnum & 0x0000FFFF; // avoid sign extension diff --git a/src/testcases/org/apache/poi/hssf/model/TestFormulaParserEval.java b/src/testcases/org/apache/poi/hssf/model/TestFormulaParserEval.java index 741973453..ac55ce619 100644 --- a/src/testcases/org/apache/poi/hssf/model/TestFormulaParserEval.java +++ b/src/testcases/org/apache/poi/hssf/model/TestFormulaParserEval.java @@ -38,42 +38,34 @@ import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator.CellValue; */ public final class TestFormulaParserEval extends TestCase { - public void testWithNamedRange() throws Exception { + public void testWithNamedRange() { HSSFWorkbook workbook = new HSSFWorkbook(); - FormulaParser fp; Ptg[] ptgs; HSSFSheet s = workbook.createSheet("Foo"); - s.createRow(0).createCell((short)0).setCellValue(1.1); - s.createRow(1).createCell((short)0).setCellValue(2.3); - s.createRow(2).createCell((short)2).setCellValue(3.1); + s.createRow(0).createCell(0).setCellValue(1.1); + s.createRow(1).createCell(0).setCellValue(2.3); + s.createRow(2).createCell(2).setCellValue(3.1); HSSFName name = workbook.createName(); name.setNameName("testName"); name.setReference("A1:A2"); - fp = HSSFFormulaEvaluator.getUnderlyingParser(workbook, "SUM(testName)"); - fp.parse(); - ptgs = fp.getRPNPtg(); + ptgs = FormulaParser.parse("SUM(testName)", workbook); assertTrue("two tokens expected, got "+ptgs.length,ptgs.length == 2); assertEquals(NamePtg.class, ptgs[0].getClass()); assertEquals(FuncVarPtg.class, ptgs[1].getClass()); // Now make it a single cell name.setReference("C3"); - - fp = HSSFFormulaEvaluator.getUnderlyingParser(workbook, "SUM(testName)"); - fp.parse(); - ptgs = fp.getRPNPtg(); + ptgs = FormulaParser.parse("SUM(testName)", workbook); assertTrue("two tokens expected, got "+ptgs.length,ptgs.length == 2); assertEquals(NamePtg.class, ptgs[0].getClass()); assertEquals(FuncVarPtg.class, ptgs[1].getClass()); // And make it non-contiguous name.setReference("A1:A2,C3"); - fp = HSSFFormulaEvaluator.getUnderlyingParser(workbook, "SUM(testName)"); - fp.parse(); - ptgs = fp.getRPNPtg(); + ptgs = FormulaParser.parse("SUM(testName)", workbook); assertTrue("two tokens expected, got "+ptgs.length,ptgs.length == 2); assertEquals(NamePtg.class, ptgs[0].getClass()); assertEquals(FuncVarPtg.class, ptgs[1].getClass()); @@ -86,15 +78,14 @@ public final class TestFormulaParserEval extends TestCase { wb.setSheetName(0, "Sheet1"); HSSFRow row = sheet.createRow(0); - HSSFCell cell = row.createCell((short)0); + HSSFCell cell = row.createCell(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); + sheet.createRow(32768).createCell(0).setCellValue(31); + sheet.createRow(32769).createCell(0).setCellValue(11); HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(sheet, wb); - fe.setCurrentRow(row); CellValue result; try { result = fe.evaluate(cell); diff --git a/src/testcases/org/apache/poi/hssf/record/formula/eval/TestCircularReferences.java b/src/testcases/org/apache/poi/hssf/record/formula/eval/TestCircularReferences.java index 72db658f7..f629f006e 100755 --- a/src/testcases/org/apache/poi/hssf/record/formula/eval/TestCircularReferences.java +++ b/src/testcases/org/apache/poi/hssf/record/formula/eval/TestCircularReferences.java @@ -35,10 +35,9 @@ public final class TestCircularReferences extends TestCase { /** * Translates StackOverflowError into AssertionFailedError */ - private static CellValue evaluateWithCycles(HSSFWorkbook wb, HSSFSheet sheet, HSSFRow row, HSSFCell testCell) + private static CellValue evaluateWithCycles(HSSFWorkbook wb, HSSFSheet sheet, HSSFCell testCell) throws AssertionFailedError { HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(sheet, wb); - evaluator.setCurrentRow(row); try { return evaluator.evaluate(testCell); } catch (StackOverflowError e) { @@ -63,12 +62,12 @@ public final class TestCircularReferences extends TestCase { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("Sheet1"); - short colB = 1; + int colB = 1; sheet.createRow(0).createCell(colB).setCellValue(1); sheet.createRow(1).createCell(colB).setCellValue(2); sheet.createRow(2).createCell(colB).setCellValue(3); HSSFRow row4 = sheet.createRow(3); - HSSFCell testCell = row4.createCell((short)0); + HSSFCell testCell = row4.createCell(0); // This formula should evaluate to the contents of B2, testCell.setCellFormula("INDEX(A1:B4,2,2)"); // However the range A1:B4 also includes the current cell A4. If the other parameters @@ -76,7 +75,7 @@ public final class TestCircularReferences extends TestCase { // arguments before invoking operators, POI must handle such potential cycles gracefully. - CellValue cellValue = evaluateWithCycles(wb, sheet, row4, testCell); + CellValue cellValue = evaluateWithCycles(wb, sheet, testCell); assertTrue(cellValue.getCellType() == HSSFCell.CELL_TYPE_NUMERIC); assertEquals(2, cellValue.getNumberValue(), 0); @@ -91,12 +90,11 @@ public final class TestCircularReferences extends TestCase { HSSFSheet sheet = wb.createSheet("Sheet1"); HSSFRow row = sheet.createRow(0); - HSSFCell testCell = row.createCell((short)0); + HSSFCell testCell = row.createCell(0); testCell.setCellFormula("A1"); HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(sheet, wb); - evaluator.setCurrentRow(row); - CellValue cellValue = evaluateWithCycles(wb, sheet, row, testCell); + CellValue cellValue = evaluateWithCycles(wb, sheet, testCell); confirmCycleErrorCode(cellValue); } @@ -110,15 +108,14 @@ public final class TestCircularReferences extends TestCase { HSSFSheet sheet = wb.createSheet("Sheet1"); HSSFRow row = sheet.createRow(0); - row.createCell((short)0).setCellFormula("B1"); - row.createCell((short)1).setCellFormula("C1"); - row.createCell((short)2).setCellFormula("D1"); - HSSFCell testCell = row.createCell((short)3); + row.createCell(0).setCellFormula("B1"); + row.createCell(1).setCellFormula("C1"); + row.createCell(2).setCellFormula("D1"); + HSSFCell testCell = row.createCell(3); testCell.setCellFormula("A1"); HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(sheet, wb); - evaluator.setCurrentRow(row); - CellValue cellValue = evaluateWithCycles(wb, sheet, row, testCell); + CellValue cellValue = evaluateWithCycles(wb, sheet, testCell); confirmCycleErrorCode(cellValue); } diff --git a/src/testcases/org/apache/poi/hssf/record/formula/eval/TestExternalFunction.java b/src/testcases/org/apache/poi/hssf/record/formula/eval/TestExternalFunction.java index 27e333865..f0cf09912 100755 --- a/src/testcases/org/apache/poi/hssf/record/formula/eval/TestExternalFunction.java +++ b/src/testcases/org/apache/poi/hssf/record/formula/eval/TestExternalFunction.java @@ -40,7 +40,7 @@ public final class TestExternalFunction extends TestCase { HSSFSheet sheet = wb.createSheet(); wb.setSheetName(0, "Sheet1"); HSSFRow row = sheet.createRow(0); - HSSFCell cell = row.createCell((short)0); + HSSFCell cell = row.createCell(0); HSSFName hssfName = wb.createName(); hssfName.setNameName("myFunc"); @@ -50,7 +50,6 @@ public final class TestExternalFunction extends TestCase { assertEquals("myFunc()", actualFormula); HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(sheet, wb); - fe.setCurrentRow(row); CellValue evalResult = fe.evaluate(cell); // Check the return value from ExternalFunction.evaluate() diff --git a/src/testcases/org/apache/poi/hssf/record/formula/eval/TestFormulaBugs.java b/src/testcases/org/apache/poi/hssf/record/formula/eval/TestFormulaBugs.java index 193cba9f1..27ece9478 100755 --- a/src/testcases/org/apache/poi/hssf/record/formula/eval/TestFormulaBugs.java +++ b/src/testcases/org/apache/poi/hssf/record/formula/eval/TestFormulaBugs.java @@ -67,7 +67,6 @@ public final class TestFormulaBugs extends TestCase { // We might as well evaluate the formula HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(sheet, wb); - fe.setCurrentRow(row); CellValue cv = fe.evaluate(cell); assertEquals(HSSFCell.CELL_TYPE_NUMERIC, cv.getCellType()); @@ -84,20 +83,20 @@ public final class TestFormulaBugs extends TestCase { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("input"); // input row 0 - HSSFRow row = sheet.createRow((short) 0); - HSSFCell cell = row.createCell((short) 0); - cell = row.createCell((short) 1); + HSSFRow row = sheet.createRow(0); + HSSFCell cell = row.createCell(0); + cell = row.createCell(1); cell.setCellValue(1); // B1 // input row 1 - row = sheet.createRow((short) 1); - cell = row.createCell((short) 1); + row = sheet.createRow(1); + cell = row.createCell(1); cell.setCellValue(999); // B2 int rno = 4; row = sheet.createRow(rno); - cell = row.createCell((short) 1); // B5 + cell = row.createCell(1); // B5 cell.setCellFormula("isnumber(b1)"); - cell = row.createCell((short) 3); // D5 + cell = row.createCell(3); // D5 cell.setCellFormula("IF(ISNUMBER(b1),b1,b2)"); if (false) { // set true to check excel file manually @@ -113,7 +112,6 @@ public final class TestFormulaBugs extends TestCase { // use POI's evaluator as an extra sanity check HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(sheet, wb); - fe.setCurrentRow(row); CellValue cv; cv = fe.evaluate(cell); assertEquals(HSSFCell.CELL_TYPE_NUMERIC, cv.getCellType()); @@ -132,7 +130,7 @@ public final class TestFormulaBugs extends TestCase { HSSFSheet sheet1 = wb.createSheet("Sheet1"); HSSFRow row = sheet1.createRow(0); - HSSFCell cell = row.createCell((short) 0); + HSSFCell cell = row.createCell(0); // it's important to create the referenced sheet first HSSFSheet sheet2 = wb.createSheet("A"); // note name 'A' @@ -165,7 +163,6 @@ public final class TestFormulaBugs extends TestCase { double expectedResult = (4.0 * 8.0 + 5.0 * 9.0) / 10.0; HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(sheet1, wb); - fe.setCurrentRow(row); CellValue cv = fe.evaluate(cell); assertEquals(HSSFCell.CELL_TYPE_NUMERIC, cv.getCellType()); @@ -174,6 +171,6 @@ public final class TestFormulaBugs extends TestCase { private static void addCell(HSSFSheet sheet, int rowIx, int colIx, double value) { - sheet.createRow(rowIx).createCell((short) colIx).setCellValue(value); + sheet.createRow(rowIx).createCell(colIx).setCellValue(value); } } diff --git a/src/testcases/org/apache/poi/hssf/record/formula/eval/TestFormulasFromSpreadsheet.java b/src/testcases/org/apache/poi/hssf/record/formula/eval/TestFormulasFromSpreadsheet.java index dbe09394f..10e5cec64 100644 --- a/src/testcases/org/apache/poi/hssf/record/formula/eval/TestFormulasFromSpreadsheet.java +++ b/src/testcases/org/apache/poi/hssf/record/formula/eval/TestFormulasFromSpreadsheet.java @@ -1,19 +1,19 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ package org.apache.poi.hssf.record.formula.eval; @@ -69,7 +69,7 @@ public final class TestFormulasFromSpreadsheet extends TestCase { /** * Index of the column that contains the function names */ - public static final short COLUMN_INDEX_FUNCTION_NAME = 1; // Column 'B' + public static final int COLUMN_INDEX_FUNCTION_NAME = 1; // Column 'B' /** * Used to indicate when there are no more functions left @@ -96,7 +96,7 @@ public final class TestFormulasFromSpreadsheet extends TestCase { private int _evaluationFailureCount; private int _evaluationSuccessCount; - private static final HSSFCell getExpectedValueCell(HSSFRow row, short columnIndex) { + private static final HSSFCell getExpectedValueCell(HSSFRow row, int columnIndex) { if (row == null) { return null; } @@ -238,10 +238,9 @@ public final class TestFormulasFromSpreadsheet extends TestCase { int result = Result.NO_EVALUATIONS_FOUND; // so far short endcolnum = formulasRow.getLastCellNum(); - evaluator.setCurrentRow(formulasRow); // iterate across the row for all the evaluation cases - for (short colnum=SS.COLUMN_INDEX_FIRST_TEST_VALUE; colnum < endcolnum; colnum++) { + for (int colnum=SS.COLUMN_INDEX_FIRST_TEST_VALUE; colnum < endcolnum; colnum++) { HSSFCell c = formulasRow.getCell(colnum); if (c == null || c.getCellType() != HSSFCell.CELL_TYPE_FORMULA) { continue; @@ -297,7 +296,6 @@ public final class TestFormulasFromSpreadsheet extends TestCase { for(int i=startIx; i0,MATCH(V4:V220,V4:V220,0),\"\"))>0,1))"; cell.setCellFormula(formula); HSSFWorkbook wb_sv = writeOutAndReadBack(wb); - HSSFCell cell_sv = wb_sv.getSheetAt(0).getRow(0).getCell((short)0); + HSSFCell cell_sv = wb_sv.getSheetAt(0).getRow(0).getCell(0); assertEquals(formula, cell_sv.getCellFormula()); } - public void test36947() throws Exception { + public void test36947() { HSSFWorkbook wb = openSample("36947.xls"); assertTrue("no errors reading sample xls", true); writeOutAndReadBack(wb); @@ -946,12 +946,12 @@ public final class TestBugs extends TestCase { */ public void test42448(){ HSSFWorkbook wb = new HSSFWorkbook(); - HSSFCell cell = wb.createSheet().createRow(0).createCell((short)0); + HSSFCell cell = wb.createSheet().createRow(0).createCell(0); cell.setCellFormula("SUMPRODUCT(A!C7:A!C67, B8:B68) / B69"); assertTrue("no errors parsing formula", true); } - public void test39634() throws Exception { + public void test39634() { HSSFWorkbook wb = openSample("39634.xls"); assertTrue("no errors reading sample xls", true); writeOutAndReadBack(wb); @@ -963,7 +963,7 @@ public final class TestBugs extends TestCase { * HSSFObjectData * @throws Exception */ - public void test44840() throws Exception { + public void test44840() { HSSFWorkbook wb = openSample("WithCheckBoxes.xls"); // Take a look at the embeded objects @@ -991,7 +991,11 @@ public final class TestBugs extends TestCase { try { obj.getDirectory(); fail(); - } catch(FileNotFoundException e) {} + } catch(FileNotFoundException e) { + // expectd during successful test + } catch (IOException e) { + throw new RuntimeException(e); + } } /** @@ -1000,7 +1004,7 @@ public final class TestBugs extends TestCase { * used for printing stuff. * Currently broken, as we change the Ptg */ - public void test30978() throws Exception { + public void test30978() { HSSFWorkbook wb = openSample("30978-alt.xls"); assertEquals(1, wb.getNumberOfNames()); assertEquals(3, wb.getNumberOfSheets()); @@ -1056,15 +1060,15 @@ public final class TestBugs extends TestCase { /** * Test that fonts get added properly */ - public void test45338() throws Exception { + public void test45338() { HSSFWorkbook wb = new HSSFWorkbook(); assertEquals(4, wb.getNumberOfFonts()); HSSFSheet s = wb.createSheet(); s.createRow(0); s.createRow(1); - HSSFCell c1 = s.getRow(0).createCell((short)0); - HSSFCell c2 = s.getRow(1).createCell((short)0); + HSSFCell c1 = s.getRow(0).createCell(0); + HSSFCell c2 = s.getRow(1).createCell(0); assertEquals(4, wb.getNumberOfFonts()); @@ -1140,15 +1144,14 @@ public final class TestBugs extends TestCase { /** * From the mailing list - ensure we can handle a formula * containing a zip code, eg ="70164" - * @throws Exception */ - public void testZipCodeFormulas() throws Exception { + public void testZipCodeFormulas() { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet s = wb.createSheet(); s.createRow(0); - HSSFCell c1 = s.getRow(0).createCell((short)0); - HSSFCell c2 = s.getRow(0).createCell((short)1); - HSSFCell c3 = s.getRow(0).createCell((short)2); + HSSFCell c1 = s.getRow(0).createCell(0); + HSSFCell c2 = s.getRow(0).createCell(1); + HSSFCell c3 = s.getRow(0).createCell(2); // As number and string c1.setCellFormula("70164"); @@ -1176,7 +1179,6 @@ public final class TestBugs extends TestCase { // Now evaluate, they should all be changed HSSFFormulaEvaluator eval = new HSSFFormulaEvaluator(s, wb); - eval.setCurrentRow(s.getRow(0)); eval.evaluateFormulaCell(c1); eval.evaluateFormulaCell(c2); eval.evaluateFormulaCell(c3); @@ -1194,9 +1196,9 @@ public final class TestBugs extends TestCase { // Write and read HSSFWorkbook nwb = writeOutAndReadBack(wb); HSSFSheet ns = nwb.getSheetAt(0); - HSSFCell nc1 = ns.getRow(0).getCell((short)0); - HSSFCell nc2 = ns.getRow(0).getCell((short)1); - HSSFCell nc3 = ns.getRow(0).getCell((short)2); + HSSFCell nc1 = ns.getRow(0).getCell(0); + HSSFCell nc2 = ns.getRow(0).getCell(1); + HSSFCell nc3 = ns.getRow(0).getCell(2); // Re-check assertEquals(70164.0, nc1.getNumericCellValue(), 0.00001); @@ -1241,7 +1243,7 @@ public final class TestBugs extends TestCase { * For now, blows up with an exception from ExtPtg * Expected ExpPtg to be converted from Shared to Non-Shared... */ - public void DISABLEDtest43623() throws Exception { + public void DISABLEDtest43623() { HSSFWorkbook wb = openSample("43623.xls"); assertEquals(1, wb.getNumberOfSheets()); @@ -1272,7 +1274,7 @@ public final class TestBugs extends TestCase { * People are all getting confused about the last * row and cell number */ - public void test30635() throws Exception { + public void test30635() { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet s = wb.createSheet(); @@ -1301,17 +1303,17 @@ public final class TestBugs extends TestCase { assertEquals(0, r.getPhysicalNumberOfCells()); // Add a cell, things move off -1 - r.createCell((short)0); + r.createCell(0); assertEquals(0, r.getFirstCellNum()); assertEquals(1, r.getLastCellNum()); // last cell # + 1 assertEquals(1, r.getPhysicalNumberOfCells()); - r.createCell((short)1); + r.createCell(1); assertEquals(0, r.getFirstCellNum()); assertEquals(2, r.getLastCellNum()); // last cell # + 1 assertEquals(2, r.getPhysicalNumberOfCells()); - r.createCell((short)4); + r.createCell(4); assertEquals(0, r.getFirstCellNum()); assertEquals(5, r.getLastCellNum()); // last cell # + 1 assertEquals(3, r.getPhysicalNumberOfCells()); @@ -1320,7 +1322,7 @@ public final class TestBugs extends TestCase { /** * Data Tables - ptg 0x2 */ - public void test44958() throws Exception { + public void test44958() { HSSFWorkbook wb = openSample("44958.xls"); HSSFSheet s; HSSFRow r; @@ -1351,7 +1353,7 @@ public final class TestBugs extends TestCase { /** * 45322: HSSFSheet.autoSizeColumn fails when style.getDataFormat() returns -1 */ - public void test45322() throws Exception { + public void test45322() { HSSFWorkbook wb = openSample("44958.xls"); HSSFSheet sh = wb.getSheetAt(0); for(short i=0; i < 30; i++) sh.autoSizeColumn(i); @@ -1361,7 +1363,7 @@ public final class TestBugs extends TestCase { * We used to add too many UncalcRecords to sheets * with diagrams on. Don't any more */ - public void test45414() throws Exception { + public void test45414() { HSSFWorkbook wb = openSample("WithThreeCharts.xls"); wb.getSheetAt(0).setForceFormulaRecalculation(true); wb.getSheetAt(1).setForceFormulaRecalculation(false); diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestFormulaEvaluatorBugs.java b/src/testcases/org/apache/poi/hssf/usermodel/TestFormulaEvaluatorBugs.java index 318fcd2bf..7dbb9c3e1 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestFormulaEvaluatorBugs.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestFormulaEvaluatorBugs.java @@ -59,11 +59,11 @@ public final class TestFormulaEvaluatorBugs extends TestCase { HSSFSheet sheet = wb.getSheetAt(0); HSSFRow row = sheet.getRow(0); - row.getCell((short) 0).setCellValue(4.2); - row.getCell((short) 2).setCellValue(25); + row.getCell(0).setCellValue(4.2); + row.getCell(2).setCellValue(25); HSSFFormulaEvaluator.evaluateAllFormulaCells(wb); - assertEquals(4.2 * 25, row.getCell((short) 3).getNumericCellValue(), 0.0001); + assertEquals(4.2 * 25, row.getCell(3).getNumericCellValue(), 0.0001); // Save File existing = new File(tmpDirName, "44636-existing.xls"); @@ -77,14 +77,14 @@ public final class TestFormulaEvaluatorBugs extends TestCase { sheet = wb.createSheet(); row = sheet.createRow(0); - row.createCell((short) 0).setCellValue(1.2); - row.createCell((short) 1).setCellValue(4.2); + row.createCell(0).setCellValue(1.2); + row.createCell(1).setCellValue(4.2); row = sheet.createRow(1); - row.createCell((short) 0).setCellFormula("SUM(A1:B1)"); + row.createCell(0).setCellFormula("SUM(A1:B1)"); HSSFFormulaEvaluator.evaluateAllFormulaCells(wb); - assertEquals(5.4, row.getCell((short) 0).getNumericCellValue(), 0.0001); + assertEquals(5.4, row.getCell(0).getNumericCellValue(), 0.0001); // Save File scratch = new File(tmpDirName, "44636-scratch.xls"); @@ -113,57 +113,48 @@ public final class TestFormulaEvaluatorBugs extends TestCase { HSSFFormulaEvaluator eva = new HSSFFormulaEvaluator(sheet, wb); row = sheet.getRow(0); - cell = row.getCell((short) 0); + cell = row.getCell(0); assertEquals("31+46", cell.getCellFormula()); - eva.setCurrentRow(row); assertEquals(77, eva.evaluate(cell).getNumberValue(), 0); row = sheet.getRow(1); - cell = row.getCell((short) 0); + cell = row.getCell(0); assertEquals("30+53", cell.getCellFormula()); - eva.setCurrentRow(row); assertEquals(83, eva.evaluate(cell).getNumberValue(), 0); row = sheet.getRow(2); - cell = row.getCell((short) 0); + cell = row.getCell(0); assertEquals("SUM(A1:A2)", cell.getCellFormula()); - eva.setCurrentRow(row); assertEquals(160, eva.evaluate(cell).getNumberValue(), 0); row = sheet.getRow(4); - cell = row.getCell((short) 0); + cell = row.getCell(0); assertEquals("32767+32768", cell.getCellFormula()); - eva.setCurrentRow(row); assertEquals(65535, eva.evaluate(cell).getNumberValue(), 0); row = sheet.getRow(7); - cell = row.getCell((short) 0); + cell = row.getCell(0); assertEquals("32744+42333", cell.getCellFormula()); - eva.setCurrentRow(row); assertEquals(75077, eva.evaluate(cell).getNumberValue(), 0); row = sheet.getRow(8); - cell = row.getCell((short) 0); + cell = row.getCell(0); assertEquals("327680.0/32768", cell.getCellFormula()); - eva.setCurrentRow(row); assertEquals(10, eva.evaluate(cell).getNumberValue(), 0); row = sheet.getRow(9); - cell = row.getCell((short) 0); + cell = row.getCell(0); assertEquals("32767+32769", cell.getCellFormula()); - eva.setCurrentRow(row); assertEquals(65536, eva.evaluate(cell).getNumberValue(), 0); row = sheet.getRow(10); - cell = row.getCell((short) 0); + cell = row.getCell(0); assertEquals("35000+36000", cell.getCellFormula()); - eva.setCurrentRow(row); assertEquals(71000, eva.evaluate(cell).getNumberValue(), 0); row = sheet.getRow(11); - cell = row.getCell((short) 0); + cell = row.getCell(0); assertEquals("-1000000.0-3000000.0", cell.getCellFormula()); - eva.setCurrentRow(row); assertEquals(-4000000, eva.evaluate(cell).getNumberValue(), 0); } @@ -189,7 +180,7 @@ public final class TestFormulaEvaluatorBugs extends TestCase { HSSFRow rowSUM2D = sheet.getRow(5); // Test the sum - HSSFCell cellSUM = rowSUM.getCell((short) 0); + HSSFCell cellSUM = rowSUM.getCell(0); FormulaRecordAggregate frec = (FormulaRecordAggregate) cellSUM.getCellValueRecord(); List ops = frec.getFormulaRecord().getParsedExpression(); @@ -210,7 +201,6 @@ public final class TestFormulaEvaluatorBugs extends TestCase { // rows it covers as we don't have the sheet // to hand when turning the Ptgs into a string assertEquals("SUM(C:C)", cellSUM.getCellFormula()); - eva.setCurrentRow(rowSUM); // But the evaluator knows the sheet, so it // can do it properly @@ -219,15 +209,13 @@ public final class TestFormulaEvaluatorBugs extends TestCase { // Test the index // Again, the formula string will be right but // lacking row count, evaluated will be right - HSSFCell cellIDX = rowIDX.getCell((short) 0); + HSSFCell cellIDX = rowIDX.getCell(0); assertEquals("INDEX(C:C,2,1)", cellIDX.getCellFormula()); - eva.setCurrentRow(rowIDX); assertEquals(2, eva.evaluate(cellIDX).getNumberValue(), 0); // Across two colums - HSSFCell cellSUM2D = rowSUM2D.getCell((short) 0); + HSSFCell cellSUM2D = rowSUM2D.getCell(0); assertEquals("SUM(C:D)", cellSUM2D.getCellFormula()); - eva.setCurrentRow(rowSUM2D); assertEquals(66, eva.evaluate(cellSUM2D).getNumberValue(), 0); } @@ -239,12 +227,11 @@ public final class TestFormulaEvaluatorBugs extends TestCase { HSSFSheet sheet = wb.createSheet(); wb.setSheetName(0, "Sheet1"); HSSFRow row = sheet.createRow(0); - HSSFCell cell = row.createCell((short) 0); + HSSFCell cell = row.createCell(0); cell.setCellFormula("1=1"); HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(sheet, wb); - fe.setCurrentRow(row); try { fe.evaluateInCell(cell); } catch (NumberFormatException e) { @@ -267,7 +254,6 @@ public final class TestFormulaEvaluatorBugs extends TestCase { for (Iterator rows = s.rowIterator(); rows.hasNext();) { HSSFRow r = (HSSFRow) rows.next(); - eval.setCurrentRow(r); for (Iterator cells = r.cellIterator(); cells.hasNext();) { HSSFCell c = (HSSFCell) cells.next(); @@ -281,10 +267,9 @@ public final class TestFormulaEvaluatorBugs extends TestCase { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("Sheet1"); HSSFRow row = sheet.createRow(1); - HSSFCell cell = row.createCell((short) 0); + HSSFCell cell = row.createCell(0); cell.setCellFormula("na()"); // this formula evaluates to an Excel error code '#N/A' HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(sheet, wb); - fe.setCurrentRow(row); try { fe.evaluateInCell(cell); } catch (NumberFormatException e) { @@ -320,8 +305,6 @@ public final class TestFormulaEvaluatorBugs extends TestCase { final HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(sheet, wb); - evaluator.setCurrentRow(excelRow); - now = System.currentTimeMillis(); evaluator.evaluate(excelCell); then = System.currentTimeMillis(); @@ -333,8 +316,6 @@ public final class TestFormulaEvaluatorBugs extends TestCase { final HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(sheet, wb); - evaluator.setCurrentRow(excelRow); - now = System.currentTimeMillis(); evaluator.evaluate(excelCell); then = System.currentTimeMillis(); diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestFormulaEvaluatorDocs.java b/src/testcases/org/apache/poi/hssf/usermodel/TestFormulaEvaluatorDocs.java index 6c2e3b641..bed8869d5 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestFormulaEvaluatorDocs.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestFormulaEvaluatorDocs.java @@ -1,3 +1,20 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + package org.apache.poi.hssf.usermodel; import java.util.Iterator; @@ -9,15 +26,12 @@ import junit.framework.TestCase; * http://poi.apache.org/hssf/eval.html * all actually works as we'd expect them to */ -public class TestFormulaEvaluatorDocs extends TestCase { - protected void setUp() throws Exception { - super.setUp(); - } +public final class TestFormulaEvaluatorDocs extends TestCase { /** * http://poi.apache.org/hssf/eval.html#EvaluateAll */ - public void testEvaluateAll() throws Exception { + public void testEvaluateAll() { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet s1 = wb.createSheet(); HSSFSheet s2 = wb.createSheet(); @@ -28,21 +42,21 @@ public class TestFormulaEvaluatorDocs extends TestCase { HSSFRow s1r2 = s1.createRow(1); HSSFRow s2r1 = s2.createRow(0); - HSSFCell s1r1c1 = s1r1.createCell((short)0); - HSSFCell s1r1c2 = s1r1.createCell((short)1); - HSSFCell s1r1c3 = s1r1.createCell((short)2); + HSSFCell s1r1c1 = s1r1.createCell(0); + HSSFCell s1r1c2 = s1r1.createCell(1); + HSSFCell s1r1c3 = s1r1.createCell(2); s1r1c1.setCellValue(22.3); s1r1c2.setCellValue(33.4); s1r1c3.setCellFormula("SUM(A1:B1)"); - HSSFCell s1r2c1 = s1r2.createCell((short)0); - HSSFCell s1r2c2 = s1r2.createCell((short)1); - HSSFCell s1r2c3 = s1r2.createCell((short)2); + HSSFCell s1r2c1 = s1r2.createCell(0); + HSSFCell s1r2c2 = s1r2.createCell(1); + HSSFCell s1r2c3 = s1r2.createCell(2); s1r2c1.setCellValue(-1.2); s1r2c2.setCellValue(-3.4); s1r2c3.setCellFormula("SUM(A2:B2)"); - HSSFCell s2r1c1 = s2r1.createCell((short)0); + HSSFCell s2r1c1 = s2r1.createCell(0); s2r1c1.setCellFormula("S1!A1"); // Not evaluated yet @@ -58,7 +72,6 @@ public class TestFormulaEvaluatorDocs extends TestCase { for(Iterator rit = sheet.rowIterator(); rit.hasNext();) { HSSFRow r = (HSSFRow)rit.next(); - evaluator.setCurrentRow(r); for(Iterator cit = r.cellIterator(); cit.hasNext();) { HSSFCell c = (HSSFCell)cit.next(); @@ -73,17 +86,17 @@ public class TestFormulaEvaluatorDocs extends TestCase { } // Check now as expected - assertEquals(55.7, wb.getSheetAt(0).getRow(0).getCell((short)2).getNumericCellValue(), 0); - assertEquals("SUM(A1:B1)", wb.getSheetAt(0).getRow(0).getCell((short)2).getCellFormula()); - assertEquals(HSSFCell.CELL_TYPE_FORMULA, wb.getSheetAt(0).getRow(0).getCell((short)2).getCellType()); + assertEquals(55.7, wb.getSheetAt(0).getRow(0).getCell(2).getNumericCellValue(), 0); + assertEquals("SUM(A1:B1)", wb.getSheetAt(0).getRow(0).getCell(2).getCellFormula()); + assertEquals(HSSFCell.CELL_TYPE_FORMULA, wb.getSheetAt(0).getRow(0).getCell(2).getCellType()); - assertEquals(-4.6, wb.getSheetAt(0).getRow(1).getCell((short)2).getNumericCellValue(), 0); - assertEquals("SUM(A2:B2)", wb.getSheetAt(0).getRow(1).getCell((short)2).getCellFormula()); - assertEquals(HSSFCell.CELL_TYPE_FORMULA, wb.getSheetAt(0).getRow(1).getCell((short)2).getCellType()); + assertEquals(-4.6, wb.getSheetAt(0).getRow(1).getCell(2).getNumericCellValue(), 0); + assertEquals("SUM(A2:B2)", wb.getSheetAt(0).getRow(1).getCell(2).getCellFormula()); + assertEquals(HSSFCell.CELL_TYPE_FORMULA, wb.getSheetAt(0).getRow(1).getCell(2).getCellType()); - assertEquals(22.3, wb.getSheetAt(1).getRow(0).getCell((short)0).getNumericCellValue(), 0); - assertEquals("'S1'!A1", wb.getSheetAt(1).getRow(0).getCell((short)0).getCellFormula()); - assertEquals(HSSFCell.CELL_TYPE_FORMULA, wb.getSheetAt(1).getRow(0).getCell((short)0).getCellType()); + assertEquals(22.3, wb.getSheetAt(1).getRow(0).getCell(0).getNumericCellValue(), 0); + assertEquals("'S1'!A1", wb.getSheetAt(1).getRow(0).getCell(0).getCellFormula()); + assertEquals(HSSFCell.CELL_TYPE_FORMULA, wb.getSheetAt(1).getRow(0).getCell(0).getCellType()); // Now do the alternate call, which zaps the formulas @@ -94,7 +107,6 @@ public class TestFormulaEvaluatorDocs extends TestCase { for(Iterator rit = sheet.rowIterator(); rit.hasNext();) { HSSFRow r = (HSSFRow)rit.next(); - evaluator.setCurrentRow(r); for(Iterator cit = r.cellIterator(); cit.hasNext();) { HSSFCell c = (HSSFCell)cit.next(); @@ -105,13 +117,13 @@ public class TestFormulaEvaluatorDocs extends TestCase { } } - assertEquals(55.7, wb.getSheetAt(0).getRow(0).getCell((short)2).getNumericCellValue(), 0); - assertEquals(HSSFCell.CELL_TYPE_NUMERIC, wb.getSheetAt(0).getRow(0).getCell((short)2).getCellType()); + assertEquals(55.7, wb.getSheetAt(0).getRow(0).getCell(2).getNumericCellValue(), 0); + assertEquals(HSSFCell.CELL_TYPE_NUMERIC, wb.getSheetAt(0).getRow(0).getCell(2).getCellType()); - assertEquals(-4.6, wb.getSheetAt(0).getRow(1).getCell((short)2).getNumericCellValue(), 0); - assertEquals(HSSFCell.CELL_TYPE_NUMERIC, wb.getSheetAt(0).getRow(1).getCell((short)2).getCellType()); + assertEquals(-4.6, wb.getSheetAt(0).getRow(1).getCell(2).getNumericCellValue(), 0); + assertEquals(HSSFCell.CELL_TYPE_NUMERIC, wb.getSheetAt(0).getRow(1).getCell(2).getCellType()); - assertEquals(22.3, wb.getSheetAt(1).getRow(0).getCell((short)0).getNumericCellValue(), 0); - assertEquals(HSSFCell.CELL_TYPE_NUMERIC, wb.getSheetAt(1).getRow(0).getCell((short)0).getCellType()); + assertEquals(22.3, wb.getSheetAt(1).getRow(0).getCell(0).getNumericCellValue(), 0); + assertEquals(HSSFCell.CELL_TYPE_NUMERIC, wb.getSheetAt(1).getRow(0).getCell(0).getCellType()); } } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFCell.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFCell.java index c3d73cf4a..da5d2cc6a 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFCell.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFCell.java @@ -17,12 +17,6 @@ package org.apache.poi.hssf.usermodel; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; import java.util.Date; import java.util.GregorianCalendar; @@ -32,7 +26,6 @@ import junit.framework.TestCase; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.model.Sheet; import org.apache.poi.hssf.util.HSSFColor; -import org.apache.poi.util.TempFile; /** * Tests various functionity having to do with HSSFCell. For instance support for @@ -47,23 +40,15 @@ public final class TestHSSFCell extends TestCase { return HSSFTestDataSamples.openSampleWorkbook(sampleFileName); } private static HSSFWorkbook writeOutAndReadBack(HSSFWorkbook original) { - - try { - ByteArrayOutputStream baos = new ByteArrayOutputStream(4096); - original.write(baos); - ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); - return new HSSFWorkbook(bais); - } catch (IOException e) { - throw new RuntimeException(e); - } + return HSSFTestDataSamples.writeOutAndReadBack(original); } - public void testSetValues() throws Exception { + public void testSetValues() { HSSFWorkbook book = new HSSFWorkbook(); HSSFSheet sheet = book.createSheet("test"); HSSFRow row = sheet.createRow(0); - HSSFCell cell = row.createCell((short)0); + HSSFCell cell = row.createCell(0); cell.setCellValue(1.2); assertEquals(1.2, cell.getNumericCellValue(), 0.0001); @@ -85,54 +70,42 @@ public final class TestHSSFCell extends TestCase { /** * test that Boolean and Error types (BoolErrRecord) are supported properly. */ - public void testBoolErr() - throws java.io.IOException { + public void testBoolErr() { - File file = TempFile.createTempFile("testBoolErr",".xls"); - FileOutputStream out = new FileOutputStream(file); - HSSFWorkbook wb = new HSSFWorkbook(); - HSSFSheet s = wb.createSheet("testSheet1"); - HSSFRow r = null; - HSSFCell c = null; - r = s.createRow((short)0); - c=r.createCell((short)1); - //c.setCellType(HSSFCell.CELL_TYPE_BOOLEAN); - c.setCellValue(true); + HSSFWorkbook wb = new HSSFWorkbook(); + HSSFSheet s = wb.createSheet("testSheet1"); + HSSFRow r = null; + HSSFCell c = null; + r = s.createRow((short)0); + c=r.createCell(1); + //c.setCellType(HSSFCell.CELL_TYPE_BOOLEAN); + c.setCellValue(true); - c=r.createCell((short)2); - //c.setCellType(HSSFCell.CELL_TYPE_BOOLEAN); - c.setCellValue(false); + c=r.createCell(2); + //c.setCellType(HSSFCell.CELL_TYPE_BOOLEAN); + c.setCellValue(false); - r = s.createRow((short)1); - c=r.createCell((short)1); - //c.setCellType(HSSFCell.CELL_TYPE_ERROR); - c.setCellErrorValue((byte)0); + r = s.createRow((short)1); + c=r.createCell(1); + //c.setCellType(HSSFCell.CELL_TYPE_ERROR); + c.setCellErrorValue((byte)0); - c=r.createCell((short)2); - //c.setCellType(HSSFCell.CELL_TYPE_ERROR); - c.setCellErrorValue((byte)7); + c=r.createCell(2); + //c.setCellType(HSSFCell.CELL_TYPE_ERROR); + c.setCellErrorValue((byte)7); - - wb.write(out); - out.close(); - - assertTrue("file exists",file.exists()); - - FileInputStream in = new FileInputStream(file); - wb = new HSSFWorkbook(in); - s = wb.getSheetAt(0); - r = s.getRow(0); - c = r.getCell((short)1); - assertTrue("boolean value 0,1 = true",c.getBooleanCellValue()); - c = r.getCell((short)2); - assertTrue("boolean value 0,2 = false",c.getBooleanCellValue()==false); - r = s.getRow(1); - c = r.getCell((short)1); - assertTrue("boolean value 0,1 = 0",c.getErrorCellValue() == 0); - c = r.getCell((short)2); - assertTrue("boolean value 0,2 = 7",c.getErrorCellValue() == 7); - - in.close(); + wb = writeOutAndReadBack(wb); + s = wb.getSheetAt(0); + r = s.getRow(0); + c = r.getCell(1); + assertTrue("boolean value 0,1 = true",c.getBooleanCellValue()); + c = r.getCell(2); + assertTrue("boolean value 0,2 = false",c.getBooleanCellValue()==false); + r = s.getRow(1); + c = r.getCell(1); + assertTrue("boolean value 0,1 = 0",c.getErrorCellValue() == 0); + c = r.getCell(2); + assertTrue("boolean value 0,2 = 7",c.getErrorCellValue() == 7); } /** @@ -140,7 +113,7 @@ public final class TestHSSFCell extends TestCase { * is working properly. Conversion of the date is also an issue, * but there's a separate unit test for that. */ - public void testDateWindowingRead() throws Exception { + public void testDateWindowingRead() { GregorianCalendar cal = new GregorianCalendar(2000,0,1); // Jan. 1, 2000 Date date = cal.getTime(); @@ -150,7 +123,7 @@ public final class TestHSSFCell extends TestCase { assertEquals("Date from file using 1900 Date Windowing", date.getTime(), - sheet.getRow(0).getCell((short)0) + sheet.getRow(0).getCell(0) .getDateCellValue().getTime()); // now check a file with 1904 Date Windowing @@ -159,7 +132,7 @@ public final class TestHSSFCell extends TestCase { assertEquals("Date from file using 1904 Date Windowing", date.getTime(), - sheet.getRow(0).getCell((short)0) + sheet.getRow(0).getCell(0) .getDateCellValue().getTime()); } @@ -169,7 +142,7 @@ public final class TestHSSFCell extends TestCase { * previous test ({@link #testDateWindowingRead}) fails, the * results of this test are meaningless. */ - public void testDateWindowingWrite() throws Exception { + public void testDateWindowingWrite() { GregorianCalendar cal = new GregorianCalendar(2000,0,1); // Jan. 1, 2000 Date date = cal.getTime(); @@ -199,7 +172,7 @@ public final class TestHSSFCell extends TestCase { HSSFCell cell = row.getCell(colIdx); if (cell == null) { - cell = row.createCell((short)colIdx); + cell = row.createCell(colIdx); } cell.setCellValue(date); } @@ -214,8 +187,7 @@ public final class TestHSSFCell extends TestCase { /** * Tests that the active cell can be correctly read and set */ - public void testActiveCell() throws Exception - { + public void testActiveCell() { //read in sample HSSFWorkbook book = openSample("Simple.xls"); @@ -228,7 +200,7 @@ public final class TestHSSFCell extends TestCase { 1, s.getActiveCellRow()); //modify position through HSSFCell - HSSFCell cell = umSheet.createRow(3).createCell((short) 2); + HSSFCell cell = umSheet.createRow(3).createCell(2); cell.setAsActiveCell(); assertEquals("After modify, active cell should be in col 2", (short) 2, s.getActiveCellCol()); @@ -270,14 +242,14 @@ public final class TestHSSFCell extends TestCase { cs.setBorderBottom((short)1); r = s.createRow((short)0); - c=r.createCell((short)0); + c=r.createCell(0); c.setCellStyle(cs); c.setCellFormula("2*3"); wb = writeOutAndReadBack(wb); s = wb.getSheetAt(0); r = s.getRow(0); - c = r.getCell((short)0); + c = r.getCell(0); assertTrue("Formula Cell at 0,0", (c.getCellType()==c.CELL_TYPE_FORMULA)); cs = c.getCellStyle(); @@ -298,7 +270,7 @@ public final class TestHSSFCell extends TestCase { HSSFWorkbook wb = openSample("WithHyperlink.xls"); HSSFSheet sheet = wb.getSheetAt(0); - HSSFCell cell = sheet.getRow(4).getCell((short)0); + HSSFCell cell = sheet.getRow(4).getCell(0); HSSFHyperlink link = cell.getHyperlink(); assertNotNull(link); @@ -311,13 +283,13 @@ public final class TestHSSFCell extends TestCase { /** * Test reading hyperlinks */ - public void testWithTwoHyperlinks() throws Exception { + public void testWithTwoHyperlinks() { HSSFWorkbook wb = openSample("WithTwoHyperLinks.xls"); HSSFSheet sheet = wb.getSheetAt(0); - HSSFCell cell1 = sheet.getRow(4).getCell((short)0); + HSSFCell cell1 = sheet.getRow(4).getCell(0); HSSFHyperlink link1 = cell1.getHyperlink(); assertNotNull(link1); assertEquals("Foo", link1.getLabel()); @@ -325,55 +297,46 @@ public final class TestHSSFCell extends TestCase { assertEquals(4, link1.getFirstRow()); assertEquals(0, link1.getFirstColumn()); - HSSFCell cell2 = sheet.getRow(8).getCell((short)1); + HSSFCell cell2 = sheet.getRow(8).getCell(1); HSSFHyperlink link2 = cell2.getHyperlink(); assertNotNull(link2); assertEquals("Bar", link2.getLabel()); assertEquals("http://poi.apache.org/hssf/", link2.getAddress()); assertEquals(8, link2.getFirstRow()); assertEquals(1, link2.getFirstColumn()); - } /*tests the toString() method of HSSFCell*/ - public void testToString() throws Exception { + public void testToString() { HSSFWorkbook wb = new HSSFWorkbook(); - HSSFSheet s = wb.createSheet("Sheet1"); - HSSFRow r = s.createRow(0); - HSSFCell c; - c=r.createCell((short) 0); c.setCellValue(true); - assertEquals("Boolean", "TRUE", c.toString()); - c=r.createCell((short) 1); c.setCellValue(1.5); - assertEquals("Numeric", "1.5", c.toString()); - c=r.createCell((short)(2)); c.setCellValue(new HSSFRichTextString("Astring")); - assertEquals("String", "Astring", c.toString()); - c=r.createCell((short) 3); c.setCellErrorValue((byte) 7); - assertEquals("Error", "#ERR7", c.toString()); - c=r.createCell((short)4); c.setCellFormula("A1+B1"); - assertEquals("Formula", "A1+B1", c.toString()); - + HSSFRow r = wb.createSheet("Sheet1").createRow(0); + + r.createCell(0).setCellValue(true); + r.createCell(1).setCellValue(1.5); + r.createCell(2).setCellValue(new HSSFRichTextString("Astring")); + r.createCell(3).setCellErrorValue((byte)HSSFErrorConstants.ERROR_DIV_0); + r.createCell(4).setCellFormula("A1+B1"); + + assertEquals("Boolean", "TRUE", r.getCell(0).toString()); + assertEquals("Numeric", "1.5", r.getCell(1).toString()); + assertEquals("String", "Astring", r.getCell(2).toString()); + assertEquals("Error", "#DIV/0!", r.getCell(3).toString()); + assertEquals("Formula", "A1+B1", r.getCell(4).toString()); + //Write out the file, read it in, and then check cell values - File f = File.createTempFile("testCellToString",".xls"); - wb.write(new FileOutputStream(f)); - wb = new HSSFWorkbook(new FileInputStream(f)); - assertTrue("File exists and can be read", f.canRead()); - - s = wb.getSheetAt(0);r=s.getRow(0); - c=r.getCell((short) 0); - assertEquals("Boolean", "TRUE", c.toString()); - c=r.getCell((short) 1); - assertEquals("Numeric", "1.5", c.toString()); - c=r.getCell((short)(2)); - assertEquals("String", "Astring", c.toString()); - c=r.getCell((short) 3); - assertEquals("Error", "#ERR7", c.toString()); - c=r.getCell((short)4); - assertEquals("Formula", "A1+B1", c.toString()); + wb = writeOutAndReadBack(wb); + + r = wb.getSheetAt(0).getRow(0); + assertEquals("Boolean", "TRUE", r.getCell(0).toString()); + assertEquals("Numeric", "1.5", r.getCell(1).toString()); + assertEquals("String", "Astring", r.getCell(2).toString()); + assertEquals("Error", "#DIV/0!", r.getCell(3).toString()); + assertEquals("Formula", "A1+B1", r.getCell(4).toString()); } public void testSetStringInFormulaCell_bug44606() { HSSFWorkbook wb = new HSSFWorkbook(); - HSSFCell cell = wb.createSheet("Sheet1").createRow(0).createCell((short)0); + HSSFCell cell = wb.createSheet("Sheet1").createRow(0).createCell(0); cell.setCellFormula("B1&C1"); try { cell.setCellValue(new HSSFRichTextString("hello")); @@ -404,8 +367,8 @@ public final class TestHSSFCell extends TestCase { fail(); } catch(IllegalArgumentException e) {} - HSSFCell cellA = wbA.createSheet().createRow(0).createCell((short)0); - HSSFCell cellB = wbB.createSheet().createRow(0).createCell((short)0); + HSSFCell cellA = wbA.createSheet().createRow(0).createCell(0); + HSSFCell cellB = wbB.createSheet().createRow(0).createCell(0); cellA.setCellStyle(styA); cellB.setCellStyle(styB); @@ -418,9 +381,5 @@ public final class TestHSSFCell extends TestCase { fail(); } catch(IllegalArgumentException e) {} } - - public static void main(String [] args) { - junit.textui.TestRunner.run(TestHSSFCell.class); - } } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDataFormatter.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDataFormatter.java index e24f30da6..f1be47fd1 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDataFormatter.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDataFormatter.java @@ -19,7 +19,6 @@ package org.apache.poi.hssf.usermodel; import java.text.DecimalFormat; import java.text.Format; -import java.util.Date; import java.util.Iterator; import junit.framework.TestCase; @@ -96,7 +95,7 @@ public final class TestHSSFDataFormatter extends TestCase { // create cells with good date patterns for (int i = 0; i < goodDatePatterns.length; i++) { - HSSFCell cell = row.createCell((short) i); + HSSFCell cell = row.createCell(i); cell.setCellValue(dateNum); HSSFCellStyle cellStyle = wb.createCellStyle(); cellStyle.setDataFormat(format.getFormat(goodDatePatterns[i])); @@ -106,7 +105,7 @@ public final class TestHSSFDataFormatter extends TestCase { // create cells with num patterns for (int i = 0; i < goodNumPatterns.length; i++) { - HSSFCell cell = row.createCell((short) i); + HSSFCell cell = row.createCell(i); cell.setCellValue(-1234567890.12345); HSSFCellStyle cellStyle = wb.createCellStyle(); cellStyle.setDataFormat(format.getFormat(goodNumPatterns[i])); @@ -116,7 +115,7 @@ public final class TestHSSFDataFormatter extends TestCase { // create cells with bad num patterns for (int i = 0; i < badNumPatterns.length; i++) { - HSSFCell cell = row.createCell((short) i); + HSSFCell cell = row.createCell(i); cell.setCellValue(1234567890.12345); HSSFCellStyle cellStyle = wb.createCellStyle(); cellStyle.setDataFormat(format.getFormat(badNumPatterns[i])); @@ -127,7 +126,7 @@ public final class TestHSSFDataFormatter extends TestCase { { // Zip + 4 format row = sheet.createRow(3); - HSSFCell cell = row.createCell((short) 0); + HSSFCell cell = row.createCell(0); cell.setCellValue(123456789); HSSFCellStyle cellStyle = wb.createCellStyle(); cellStyle.setDataFormat(format.getFormat("00000-0000")); @@ -136,7 +135,7 @@ public final class TestHSSFDataFormatter extends TestCase { { // Phone number format row = sheet.createRow(4); - HSSFCell cell = row.createCell((short) 0); + HSSFCell cell = row.createCell(0); cell.setCellValue(5551234567D); HSSFCellStyle cellStyle = wb.createCellStyle(); cellStyle.setDataFormat(format.getFormat("[<=9999999]###-####;(###) ###-####")); @@ -145,7 +144,7 @@ public final class TestHSSFDataFormatter extends TestCase { { // SSN format row = sheet.createRow(5); - HSSFCell cell = row.createCell((short) 0); + HSSFCell cell = row.createCell(0); cell.setCellValue(444551234); HSSFCellStyle cellStyle = wb.createCellStyle(); cellStyle.setDataFormat(format.getFormat("000-00-0000")); @@ -154,7 +153,7 @@ public final class TestHSSFDataFormatter extends TestCase { { // formula cell row = sheet.createRow(6); - HSSFCell cell = row.createCell((short) 0); + HSSFCell cell = row.createCell(0); cell.setCellType(HSSFCell.CELL_TYPE_FORMULA); cell.setCellFormula("SUM(12.25,12.25)/100"); HSSFCellStyle cellStyle = wb.createCellStyle(); @@ -231,7 +230,6 @@ public final class TestHSSFDataFormatter extends TestCase { // null test-- null cell should result in empty String assertEquals(formatter.formatCellValue(null), ""); - } public void testGetFormattedCellValueHSSFCellHSSFFormulaEvaluator() { @@ -246,14 +244,10 @@ public final class TestHSSFDataFormatter extends TestCase { // now with a formula evaluator HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(wb.getSheetAt(0), wb); - //! must set current row ! - evaluator.setCurrentRow(row); log(formatter.formatCellValue(cell, evaluator) + "\t\t\t (with evaluator)"); assertEquals("24.50%", formatter.formatCellValue(cell,evaluator)); } - - /** * Test using a default number format. The format should be used when a * format pattern cannot be parsed by DecimalFormat.