added getRowIndex() to HSSFCell, deprecated HSSFFormulaEvaluator.setCurrentRow()

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@684321 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Josh Micich 2008-08-09 19:47:39 +00:00
parent 63041b5c31
commit 3ce7ac40ac
21 changed files with 449 additions and 587 deletions

View File

@ -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;

View File

@ -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:

View File

@ -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("<ptg-group>");

View File

@ -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

View File

@ -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);

View File

@ -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);
}

View File

@ -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()

View File

@ -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);
}
}

View File

@ -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; i<endIx; i++) {
ps.println("\tat " + stes[i].toString());
}
}
/**

View File

@ -59,12 +59,11 @@ public final class TestPercentEval extends TestCase {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("Sheet1");
HSSFRow row = sheet.createRow(0);
HSSFCell cell = row.createCell((short)0);
HSSFCell cell = row.createCell(0);
cell.setCellFormula("B1%");
row.createCell((short)1).setCellValue(50.0);
row.createCell(1).setCellValue(50.0);
HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(sheet, wb);
fe.setCurrentRow(row);
CellValue cv;
try {
cv = fe.evaluate(cell);

View File

@ -290,7 +290,6 @@ public final class TestCountFuncs extends TestCase {
continue;
}
HSSFCell cell = row.getCell(COL_IX_ACTUAL);
fe.setCurrentRow(row);
CellValue cv = fe.evaluate(cell);
double actualValue = cv.getNumberValue();
double expectedValue = row.getCell(COL_IX_EXPECTED).getNumericCellValue();

View File

@ -1,100 +1,83 @@
/*
* Created on Sep 11, 2007
*
* The Copyright statements and Licenses for the commons application may be
* found in the file LICENSE.txt
*/
/* ====================================================================
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.functions;
import junit.framework.TestCase;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator;
/**
* @author Pavel Krupets (pkrupets at palmtreebusiness dot com)
*/
public class TestDate extends TestCase {
public void setUp() {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");
HSSFRow row1 = sheet.createRow((short) 0);
this.cell11 = row1.createCell((short) 0);
this.evaluator = new HSSFFormulaEvaluator(sheet, wb);
this.evaluator.setCurrentRow(row1);
}
/**
* Test disabled pending a fix in the formula parser
*/
public void DISABLEDtestSomeArgumentsMissing() throws Exception {
this.cell11.setCellFormula("DATE(, 1, 0)");
assertEquals(0.0, this.evaluator.evaluate(this.cell11).getNumberValue(), 0);
this.cell11.setCellFormula("DATE(, 1, 1)");
assertEquals(1.0, this.evaluator.evaluate(this.cell11).getNumberValue(), 0);
}
public void testValid() throws Exception {
this.cell11.setCellType(HSSFCell.CELL_TYPE_FORMULA);
this.cell11.setCellFormula("DATE(1900, 1, 1)");
assertEquals(1, this.evaluator.evaluate(this.cell11).getNumberValue(), 0);
this.cell11.setCellFormula("DATE(1900, 1, 32)");
assertEquals(32, this.evaluator.evaluate(this.cell11).getNumberValue(), 0);
this.cell11.setCellFormula("DATE(1900, 222, 1)");
assertEquals(6727, this.evaluator.evaluate(this.cell11).getNumberValue(), 0);
this.cell11.setCellFormula("DATE(1900, 2, 0)");
assertEquals(31, this.evaluator.evaluate(this.cell11).getNumberValue(), 0);
this.cell11.setCellFormula("DATE(2000, 1, 222)");
assertEquals(36747.00, this.evaluator.evaluate(this.cell11).getNumberValue(), 0);
this.cell11.setCellFormula("DATE(2007, 1, 1)");
assertEquals(39083, this.evaluator.evaluate(this.cell11).getNumberValue(), 0);
}
public void testBugDate() {
this.cell11.setCellFormula("DATE(1900, 2, 29)");
assertEquals(60, this.evaluator.evaluate(this.cell11).getNumberValue(), 0);
this.cell11.setCellFormula("DATE(1900, 2, 30)");
assertEquals(61, this.evaluator.evaluate(this.cell11).getNumberValue(), 0);
this.cell11.setCellFormula("DATE(1900, 1, 222)");
assertEquals(222, this.evaluator.evaluate(this.cell11).getNumberValue(), 0);
this.cell11.setCellFormula("DATE(1900, 1, 2222)");
assertEquals(2222, this.evaluator.evaluate(this.cell11).getNumberValue(), 0);
this.cell11.setCellFormula("DATE(1900, 1, 22222)");
assertEquals(22222, this.evaluator.evaluate(this.cell11).getNumberValue(), 0);
}
public void testPartYears() {
this.cell11.setCellFormula("DATE(4, 1, 1)");
assertEquals(1462.00, this.evaluator.evaluate(this.cell11).getNumberValue(), 0);
this.cell11.setCellFormula("DATE(14, 1, 1)");
assertEquals(5115.00, this.evaluator.evaluate(this.cell11).getNumberValue(), 0);
this.cell11.setCellFormula("DATE(104, 1, 1)");
assertEquals(37987.00, this.evaluator.evaluate(this.cell11).getNumberValue(), 0);
this.cell11.setCellFormula("DATE(1004, 1, 1)");
assertEquals(366705.00, this.evaluator.evaluate(this.cell11).getNumberValue(), 0);
}
public final class TestDate extends TestCase {
private HSSFCell cell11;
private HSSFFormulaEvaluator evaluator;
public void setUp() {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");
cell11 = sheet.createRow(0).createCell(0);
cell11.setCellType(HSSFCell.CELL_TYPE_FORMULA);
evaluator = new HSSFFormulaEvaluator(sheet, wb);
}
/**
* Test disabled pending a fix in the formula evaluator
* TODO - create MissingArgEval and modify the formula evaluator to handle this
*/
public void DISABLEDtestSomeArgumentsMissing() {
confirm("DATE(, 1, 0)", 0.0);
confirm("DATE(, 1, 1)", 1.0);
}
public void testValid() {
confirm("DATE(1900, 1, 1)", 1);
confirm("DATE(1900, 1, 32)", 32);
confirm("DATE(1900, 222, 1)", 6727);
confirm("DATE(1900, 2, 0)", 31);
confirm("DATE(2000, 1, 222)", 36747.00);
confirm("DATE(2007, 1, 1)", 39083);
}
public void testBugDate() {
confirm("DATE(1900, 2, 29)", 60);
confirm("DATE(1900, 2, 30)", 61);
confirm("DATE(1900, 1, 222)", 222);
confirm("DATE(1900, 1, 2222)", 2222);
confirm("DATE(1900, 1, 22222)", 22222);
}
public void testPartYears() {
confirm("DATE(4, 1, 1)", 1462.00);
confirm("DATE(14, 1, 1)", 5115.00);
confirm("DATE(104, 1, 1)", 37987.00);
confirm("DATE(1004, 1, 1)", 366705.00);
}
private void confirm(String formulaText, double expectedResult) {
cell11.setCellFormula(formulaText);
double actualValue = evaluator.evaluate(cell11).getNumberValue();
assertEquals(expectedResult, actualValue, 0);
}
}

View File

@ -32,8 +32,6 @@ import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator.CellValue;
*/
public final class TestIsBlank extends TestCase {
public void test3DArea() {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet1 = wb.createSheet();
@ -41,13 +39,12 @@ public final class TestIsBlank extends TestCase {
wb.createSheet();
wb.setSheetName(1, "Sheet2");
HSSFRow row = sheet1.createRow(0);
HSSFCell cell = row.createCell((short)0);
HSSFCell cell = row.createCell(0);
cell.setCellFormula("isblank(Sheet2!A1:A1)");
HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(sheet1, wb);
fe.setCurrentRow(row);
CellValue result = fe.evaluate(cell);
assertEquals(HSSFCell.CELL_TYPE_BOOLEAN, result.getCellType());
assertEquals(true, result.getBooleanValue());
@ -57,6 +54,5 @@ public final class TestIsBlank extends TestCase {
result = fe.evaluate(cell);
assertEquals(HSSFCell.CELL_TYPE_BOOLEAN, result.getCellType());
assertEquals(true, result.getBooleanValue());
}
}

View File

@ -1,25 +1,22 @@
/*
* 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.functions;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintStream;
import junit.framework.Assert;
@ -70,10 +67,10 @@ public final class TestLookupFunctionsFromSpreadsheet extends TestCase {
/** Row (zero-based) in each sheet where the evaluation cases start. */
public static final int START_TEST_CASES_ROW_INDEX = 4; // Row '5'
/** Index of the column that contains the function names */
public static final short COLUMN_INDEX_MARKER = 0; // Column 'A'
public static final short COLUMN_INDEX_EVALUATION = 1; // Column 'B'
public static final short COLUMN_INDEX_EXPECTED_RESULT = 2; // Column 'C'
public static final short COLUMN_ROW_COMMENT = 3; // Column 'D'
public static final int COLUMN_INDEX_MARKER = 0; // Column 'A'
public static final int COLUMN_INDEX_EVALUATION = 1; // Column 'B'
public static final int COLUMN_INDEX_EXPECTED_RESULT = 2; // Column 'C'
public static final int COLUMN_ROW_COMMENT = 3; // Column 'D'
/** Used to indicate when there are no more test cases on the current sheet */
public static final String TEST_CASES_END_MARKER = "<end>";
@ -240,7 +237,6 @@ public final class TestLookupFunctionsFromSpreadsheet extends TestCase {
if (c == null || c.getCellType() != HSSFCell.CELL_TYPE_FORMULA) {
continue;
}
evaluator.setCurrentRow(r);
CellValue actualValue = evaluator.evaluate(c);
HSSFCell expectedValueCell = r.getCell(SS.COLUMN_INDEX_EXPECTED_RESULT);
String rowComment = getRowCommentColumnValue(r);
@ -307,9 +303,8 @@ public final class TestLookupFunctionsFromSpreadsheet extends TestCase {
throw new RuntimeException("First sheet's name was '" + firstSheetName + "' but expected '" + SS.README_SHEET_NAME + "'");
}
HSSFSheet sheet = workbook.getSheetAt(0);
String specifiedClassName = sheet.getRow(2).getCell((short)0).getRichStringCellValue().getString();
String specifiedClassName = sheet.getRow(2).getCell(0).getRichStringCellValue().getString();
assertEquals("Test class name in spreadsheet comment", getClass().getName(), specifiedClassName);
}
@ -362,7 +357,7 @@ public final class TestLookupFunctionsFromSpreadsheet extends TestCase {
if(r == null) {
return null;
}
HSSFCell cell = r.getCell((short) colIndex);
HSSFCell cell = r.getCell(colIndex);
if(cell == null) {
return null;
}

View File

@ -51,7 +51,6 @@ public final class TestBug42464 extends TestCase {
Iterator it = s.rowIterator();
while(it.hasNext()) {
HSSFRow r = (HSSFRow)it.next();
eval.setCurrentRow(r);
process(r, eval);
}
}

View File

@ -19,41 +19,43 @@ package org.apache.poi.hssf.usermodel;
import junit.framework.TestCase;
public class TestBug43093 extends TestCase {
/**
*
*/
public final class TestBug43093 extends TestCase {
private static void addNewSheetWithCellsA1toD4(HSSFWorkbook book, int sheet) {
HSSFSheet sht = book .createSheet("s" + sheet);
for (short r=0; r < 4; r++) {
for (int r=0; r < 4; r++) {
HSSFRow row = sht.createRow (r);
for (short c=0; c < 4; c++) {
for (int c=0; c < 4; c++) {
HSSFCell cel = row.createCell(c);
/**/ cel.setCellValue(sheet*100 + r*10 + c);
cel.setCellValue(sheet*100 + r*10 + c);
}
}
}
public void testBug43093() throws Exception {
HSSFWorkbook xlw = new HSSFWorkbook();
public void testBug43093() {
HSSFWorkbook xlw = new HSSFWorkbook();
addNewSheetWithCellsA1toD4(xlw, 1);
addNewSheetWithCellsA1toD4(xlw, 2);
addNewSheetWithCellsA1toD4(xlw, 3);
addNewSheetWithCellsA1toD4(xlw, 4);
addNewSheetWithCellsA1toD4(xlw, 1);
addNewSheetWithCellsA1toD4(xlw, 2);
addNewSheetWithCellsA1toD4(xlw, 3);
addNewSheetWithCellsA1toD4(xlw, 4);
HSSFSheet s2 = xlw.getSheet("s2");
HSSFRow s2r3 = s2.getRow(3);
HSSFCell s2E4 = s2r3.createCell((short)4);
/**/ s2E4.setCellFormula("SUM(s3!B2:C3)");
HSSFSheet s2 = xlw.getSheet("s2");
HSSFRow s2r3 = s2.getRow(3);
HSSFCell s2E4 = s2r3.createCell(4);
s2E4.setCellFormula("SUM(s3!B2:C3)");
HSSFFormulaEvaluator eva = new HSSFFormulaEvaluator(s2, xlw);
eva.setCurrentRow(s2r3);
double d = eva.evaluate(s2E4).getNumberValue();
HSSFFormulaEvaluator eva = new HSSFFormulaEvaluator(s2, xlw);
double d = eva.evaluate(s2E4).getNumberValue();
// internalEvaluate(...) Area3DEval.: 311+312+321+322 expected
assertEquals(d, (double)(311+312+321+322), 0.0000001);
// System.out.println("Area3DEval ok.: 311+312+321+322=" + d);
// internalEvaluate(...) Area3DEval.: 311+312+321+322 expected
assertEquals(d, (311+312+321+322), 0.0000001);
// System.out.println("Area3DEval ok.: 311+312+321+322=" + d);
}
}

View File

@ -78,7 +78,7 @@ public final class TestBugs extends TestCase {
HSSFWorkbook wb = openSample("15228.xls");
HSSFSheet s = wb.getSheetAt(0);
HSSFRow r = s.createRow(0);
HSSFCell c = r.createCell((short)0);
HSSFCell c = r.createCell(0);
c.setCellValue(10);
writeTestOutputFileForViewing(wb, "test15228");
}
@ -87,7 +87,7 @@ public final class TestBugs extends TestCase {
HSSFWorkbook wb = openSample("13796.xls");
HSSFSheet s = wb.getSheetAt(0);
HSSFRow r = s.createRow(0);
HSSFCell c = r.createCell((short)0);
HSSFCell c = r.createCell(0);
c.setCellValue(10);
writeOutAndReadBack(wb);
}
@ -97,7 +97,7 @@ public final class TestBugs extends TestCase {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet s = wb.createSheet();
HSSFRow r = s.createRow(0);
r.createCell((short)0).setCellFormula("HYPERLINK( \"http://jakarta.apache.org\", \"Jakarta\" )");
r.createCell(0).setCellFormula("HYPERLINK( \"http://jakarta.apache.org\", \"Jakarta\" )");
writeTestOutputFileForViewing(wb, "test23094");
}
@ -109,8 +109,8 @@ public final class TestBugs extends TestCase {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("My sheet");
HSSFRow row = sheet.createRow( (short) 0 );
HSSFCell cell = row.createCell( (short) 0 );
HSSFRow row = sheet.createRow( 0 );
HSSFCell cell = row.createCell( 0 );
cell.setCellFormula("HYPERLINK(\"http://google.com\",\"Google\")");
writeOutAndReadBack(wb);
@ -142,9 +142,9 @@ public final class TestBugs extends TestCase {
HSSFSheet sheet = wb.getSheetAt(0);
HSSFRow row = sheet.getRow(5);
HSSFCell cell = row.getCell((short)3);
HSSFCell cell = row.getCell(3);
if (cell == null)
cell = row.createCell((short)3);
cell = row.createCell(3);
// Write test
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
@ -153,9 +153,9 @@ public final class TestBugs extends TestCase {
// change existing numeric cell value
HSSFRow oRow = sheet.getRow(14);
HSSFCell oCell = oRow.getCell((short)4);
HSSFCell oCell = oRow.getCell(4);
oCell.setCellValue(75);
oCell = oRow.getCell((short)5);
oCell = oRow.getCell(5);
setCellText(oCell, "0.3");
writeTestOutputFileForViewing(wb, "test15375");
@ -177,13 +177,13 @@ public final class TestBugs extends TestCase {
tmp2 = "Test2" + i;
tmp3 = "Test3" + i;
HSSFRow row = sheet.createRow((short)i);
HSSFRow row = sheet.createRow(i);
HSSFCell cell = row.createCell((short)0);
HSSFCell cell = row.createCell(0);
setCellText(cell, tmp1);
cell = row.createCell((short)1);
cell = row.createCell(1);
setCellText(cell, tmp2);
cell = row.createCell((short)2);
cell = row.createCell(2);
setCellText(cell, tmp3);
}
writeTestOutputFileForViewing(wb, "test15375-2");
@ -203,16 +203,16 @@ public final class TestBugs extends TestCase {
HSSFRow rw = null ;
HSSFCell cell =null;
rw = sheet.createRow((short)0) ;
rw = sheet.createRow(0) ;
//Header row
for(short j=0; j<col_cnt; j++){
for(int j=0; j<col_cnt; j++){
cell = rw.createCell(j) ;
setCellText(cell, "Col " + (j+1)) ;
}
for(int i=1; i<rw_cnt; i++){
rw = sheet.createRow((short)i) ;
for(short j=0; j<col_cnt; j++){
rw = sheet.createRow(i) ;
for(int j=0; j<col_cnt; j++){
cell = rw.createCell(j) ;
setCellText(cell, "Row:" + (i+1) + ",Column:" + (j+1)) ;
}
@ -277,7 +277,7 @@ public final class TestBugs extends TestCase {
HSSFRow row = sheet.getRow(rowIndex);
int cells = row.getLastCellNum();
for (short cellIndex = 0; cellIndex < cells; cellIndex++) {
for (int cellIndex = 0; cellIndex < cells; cellIndex++) {
row.getCell(cellIndex);
}
}
@ -289,12 +289,12 @@ public final class TestBugs extends TestCase {
book.createSheet("TEST");
HSSFSheet sheet = book.cloneSheet(0);
book.setSheetName(1,"CLONE");
sheet.createRow(0).createCell((short)0).setCellValue(new HSSFRichTextString("Test"));
sheet.createRow(0).createCell(0).setCellValue(new HSSFRichTextString("Test"));
book = writeOutAndReadBack(book);
sheet = book.getSheet("CLONE");
HSSFRow row = sheet.getRow(0);
HSSFCell cell = row.getCell((short)0);
HSSFCell cell = row.getCell(0);
assertEquals("Test", cell.getRichStringCellValue().getString());
}
@ -336,14 +336,14 @@ public final class TestBugs extends TestCase {
HSSFWorkbook w = openSample("25695.xls");
HSSFCell a1 = w.getSheetAt(0).getRow(0).getCell((short) 0);
HSSFCell a2 = w.getSheetAt(0).getRow(0).getCell((short) 1);
HSSFCell b1 = w.getSheetAt(0).getRow(1).getCell((short) 0);
HSSFCell b2 = w.getSheetAt(0).getRow(1).getCell((short) 1);
HSSFCell c1 = w.getSheetAt(0).getRow(2).getCell((short) 0);
HSSFCell c2 = w.getSheetAt(0).getRow(2).getCell((short) 1);
HSSFCell d1 = w.getSheetAt(0).getRow(3).getCell((short) 0);
HSSFCell d2 = w.getSheetAt(0).getRow(3).getCell((short) 1);
HSSFCell a1 = w.getSheetAt(0).getRow(0).getCell(0);
HSSFCell a2 = w.getSheetAt(0).getRow(0).getCell(1);
HSSFCell b1 = w.getSheetAt(0).getRow(1).getCell(0);
HSSFCell b2 = w.getSheetAt(0).getRow(1).getCell(1);
HSSFCell c1 = w.getSheetAt(0).getRow(2).getCell(0);
HSSFCell c2 = w.getSheetAt(0).getRow(2).getCell(1);
HSSFCell d1 = w.getSheetAt(0).getRow(3).getCell(0);
HSSFCell d2 = w.getSheetAt(0).getRow(3).getCell(1);
if (false) {
// THAI code page
@ -366,14 +366,14 @@ public final class TestBugs extends TestCase {
HSSFWorkbook rw = writeOutAndReadBack(w);
HSSFCell ra1 = rw.getSheetAt(0).getRow(0).getCell((short) 0);
HSSFCell ra2 = rw.getSheetAt(0).getRow(0).getCell((short) 1);
HSSFCell rb1 = rw.getSheetAt(0).getRow(1).getCell((short) 0);
HSSFCell rb2 = rw.getSheetAt(0).getRow(1).getCell((short) 1);
HSSFCell rc1 = rw.getSheetAt(0).getRow(2).getCell((short) 0);
HSSFCell rc2 = rw.getSheetAt(0).getRow(2).getCell((short) 1);
HSSFCell rd1 = rw.getSheetAt(0).getRow(3).getCell((short) 0);
HSSFCell rd2 = rw.getSheetAt(0).getRow(3).getCell((short) 1);
HSSFCell ra1 = rw.getSheetAt(0).getRow(0).getCell(0);
HSSFCell ra2 = rw.getSheetAt(0).getRow(0).getCell(1);
HSSFCell rb1 = rw.getSheetAt(0).getRow(1).getCell(0);
HSSFCell rb2 = rw.getSheetAt(0).getRow(1).getCell(1);
HSSFCell rc1 = rw.getSheetAt(0).getRow(2).getCell(0);
HSSFCell rc2 = rw.getSheetAt(0).getRow(2).getCell(1);
HSSFCell rd1 = rw.getSheetAt(0).getRow(3).getCell(0);
HSSFCell rd2 = rw.getSheetAt(0).getRow(3).getCell(1);
confirmSameCellText(a1, ra1);
confirmSameCellText(b1, rb1);
@ -425,7 +425,7 @@ public final class TestBugs extends TestCase {
wb.setSheetName(0, "Sheet1");
HSSFRow row = sheet.createRow(0);
HSSFCell cell = row.createCell((short)0);
HSSFCell cell = row.createCell(0);
String formulaText =
"IF(ROUND(A2*B2*C2,2)>ROUND(B2*D2,2),ROUND(A2*B2*C2,2),ROUND(B2*D2,2))";
cell.setCellFormula(formulaText);
@ -487,7 +487,7 @@ public final class TestBugs extends TestCase {
for(int i = 1; i < 400; i++) {
HSSFRow row = sheet.getRow(i);
if(row != null) {
row.getCell((short)0);
row.getCell(0);
}
}
@ -497,7 +497,7 @@ public final class TestBugs extends TestCase {
for(int i = 1; i < 400; i++) {
HSSFRow row = sheet.getRow(i);
if(row != null) {
row.getCell((short)0);
row.getCell(0);
}
}
}
@ -521,7 +521,7 @@ public final class TestBugs extends TestCase {
for (int i = sheet.getFirstRowNum(); i <= sheet.getLastRowNum(); i++) {
HSSFRow row = sheet.getRow(i);
if (row != null) {
HSSFCell cell = row .getCell((short)0);
HSSFCell cell = row .getCell(0);
assertEquals(HSSFCell.CELL_TYPE_STRING, cell.getCellType());
count++;
}
@ -630,11 +630,11 @@ public final class TestBugs extends TestCase {
HSSFSheet workSheet = workBook.createSheet("Sheet1");
HSSFCell cell;
HSSFRow row = workSheet.createRow(0);
cell = row.createCell((short)0, HSSFCell.CELL_TYPE_NUMERIC);
cell = row.createCell(0, HSSFCell.CELL_TYPE_NUMERIC);
cell.setCellValue(1.0);
cell = row.createCell((short)1, HSSFCell.CELL_TYPE_NUMERIC);
cell = row.createCell(1, HSSFCell.CELL_TYPE_NUMERIC);
cell.setCellValue(2.0);
cell = row.createCell((short)2, HSSFCell.CELL_TYPE_FORMULA);
cell = row.createCell(2, HSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("SUM(A1:B1)");
writeOutAndReadBack(wb);
@ -751,12 +751,12 @@ public final class TestBugs extends TestCase {
// Textual value
HSSFRow r1 = s.getRow(0);
HSSFCell c1 = r1.getCell((short)1);
HSSFCell c1 = r1.getCell(1);
assertEquals("=CHOOSE(2,A2,A3,A4)", c1.getRichStringCellValue().toString());
// Formula Value
HSSFRow r2 = s.getRow(1);
HSSFCell c2 = r2.getCell((short)1);
HSSFCell c2 = r2.getCell(1);
assertEquals(25, (int)c2.getNumericCellValue());
try {
@ -898,7 +898,7 @@ public final class TestBugs extends TestCase {
* Had a problem apparently, not sure what as it
* works just fine...
*/
public void test44891() throws Exception {
public void test44891() {
HSSFWorkbook wb = openSample("44891.xls");
assertTrue("no errors reading sample xls", true);
writeOutAndReadBack(wb);
@ -910,7 +910,7 @@ public final class TestBugs extends TestCase {
*
* Works fine with poi-3.1-beta1.
*/
public void test44235() throws Exception {
public void test44235() {
HSSFWorkbook wb = openSample("44235.xls");
assertTrue("no errors reading sample xls", true);
writeOutAndReadBack(wb);
@ -925,16 +925,16 @@ public final class TestBugs extends TestCase {
public void test21334() {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sh = wb.createSheet();
HSSFCell cell = sh.createRow(0).createCell((short)0);
HSSFCell cell = sh.createRow(0).createCell(0);
String formula = "SUM(IF(FREQUENCY(IF(LEN(V4:V220)>0,MATCH(V4:V220,V4:V220,0),\"\"),IF(LEN(V4:V220)>0,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);

View File

@ -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();

View File

@ -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());
}
}

View File

@ -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);
}
}

View File

@ -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.