bug 35084, reported by Stefano Rocca. fixed in Sheet.java

git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353704 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Avik Sengupta 2005-05-31 19:03:19 +00:00
parent 1ae710d3db
commit 99fbaec5a3
4 changed files with 29 additions and 20 deletions

View File

@ -340,9 +340,20 @@ public class Sheet implements Model
ValueRecordsAggregate vrAgg = (ValueRecordsAggregate)rec; ValueRecordsAggregate vrAgg = (ValueRecordsAggregate)rec;
for (Iterator cellIter = vrAgg.getIterator();cellIter.hasNext();) { for (Iterator cellIter = vrAgg.getIterator();cellIter.hasNext();) {
Record valRec = (Record)cellIter.next(); Record valRec = (Record)cellIter.next();
clonedRecords.add(valRec);
if (valRec instanceof FormulaRecordAggregate) {
FormulaRecordAggregate fmAgg = (FormulaRecordAggregate)valRec;
Record fmAggRec = fmAgg.getFormulaRecord();
if (fmAggRec != null)
clonedRecords.add(fmAggRec);
fmAggRec = fmAgg.getStringRecord();
if (fmAggRec != null)
clonedRecords.add(fmAggRec);
} else {
clonedRecords.add(valRec);
}
} }
} else if (rec instanceof FormulaRecordAggregate) { } else if (rec instanceof FormulaRecordAggregate) { //Is this required now??
FormulaRecordAggregate fmAgg = (FormulaRecordAggregate)rec; FormulaRecordAggregate fmAgg = (FormulaRecordAggregate)rec;
Record fmAggRec = fmAgg.getFormulaRecord(); Record fmAggRec = fmAgg.getFormulaRecord();
if (fmAggRec != null) if (fmAggRec != null)

View File

@ -234,5 +234,4 @@ public class FormulaRecordAggregate
if(stringRecord==null) return null; if(stringRecord==null) return null;
return stringRecord.getString(); return stringRecord.getString();
} }
} }

View File

@ -437,6 +437,22 @@ public class TestHSSFSheet
assertEquals("HSSFSheet.getLeftCol()", leftcol, sheet.getLeftCol()); assertEquals("HSSFSheet.getLeftCol()", leftcol, sheet.getLeftCol());
} }
/** cell with formula becomes null on cloning a sheet*/
public void test35084() {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet s =wb.createSheet("Sheet1");
HSSFRow r = s.createRow(0);
r.createCell((short)0).setCellValue(1);
r.createCell((short)1).setCellFormula("A1*2");
HSSFSheet s1 = wb.cloneSheet(0);
r=s1.getRow(0);
assertEquals("double" ,r.getCell((short)0).getNumericCellValue(),(double)1,0); //sanity check
assertNotNull(r.getCell((short)1));
assertEquals("formula", r.getCell((short)1).getCellFormula(), "A1*2");
}
public static void main(java.lang.String[] args) { public static void main(java.lang.String[] args) {
junit.textui.TestRunner.run(TestHSSFSheet.class); junit.textui.TestRunner.run(TestHSSFSheet.class);
} }

View File

@ -59,21 +59,4 @@ public class TestUnfixedBugs extends TestCase {
assertTrue("Read book fine!" , true); assertTrue("Read book fine!" , true);
} }
/* cell with formula becomes null on cloning a sheet*/
public void test35084() {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet s =wb.createSheet("Sheet1");
HSSFRow r = s.createRow(0);
r.createCell((short)0).setCellValue(1);
r.createCell((short)1).setCellFormula("A1*2");
HSSFSheet s1 = wb.cloneSheet(0);
r=s1.getRow(0);
assertEquals("double" ,r.getCell((short)0).getNumericCellValue(),(double)1,0); //sanity check, pass
assertNotNull(r.getCell((short)1)); //Fails
assertEquals("formula", r.getCell((short)1).getCellFormula(), "A1*2"); //Fails
}
} }