Java Mailing List Archive

http://www.java2.5341.com/

Home » user.poi »

IndexBound-Exception by FormulaCell-Evaluation

Hardie82

2008-09-23

Replies: Find Java Web Hosting

Author LoginPost Reply

Hi. I have a problem by evaluate a formula cell. I want to iterate over all
cell in a spreedsheet and wrote following code:

   for(Iterator<HSSFRow> rit = (Iterator<HSSFRow>)sheet.rowIterator();
rit.hasNext(); ) {
     row = rit.next();
     evaluator.setCurrentRow(row);
     for(Iterator<HSSFCell> cit = (Iterator<HSSFCell>)row.cellIterator();
cit.hasNext(); ) {
       cell = cit.next();
       if (cell.getCellType() == HSSFCell.CELL_TYPE_FORMULA) {
         cellValue = evaluator.evaluate(cell);
         switch (cellValue.getCellType()) {
         case HSSFCell.CELL_TYPE_ERROR:
           switch (cellValue.getErrorValue()) {
           case ErrorConstants.ERROR_DIV_0:
             errors.add("cell.value.faulty.zerodivision"); break;
           case ErrorConstants.ERROR_NAME:
             errors.add("cell.value.faulty.name"); break;
           case ErrorConstants.ERROR_VALUE:
             errors.add("cells.value.faulty.value"); break;
           default:
             errors.add("cell.value.faulty");
           }
         }
         
         if(!cell.getCellStyle().getLocked())
           errors.add("protection.disabled.formulacell");
         if(errors.size() > 0)
           result.addError((new CellReference(row.getRowNum(),
cell.getCellNum())).formatAsString().replace("$", ""),
                         errors.toArray(new String[errors.size()]));        
         errors.clear();          
       }
       

     }
   }

i tested the code with some files, but everytime i get an
IndexOutOfBoundException at codeline "cellValue =
evaluator.evaluate(cell);". The stacktrace contains following message:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 5,
Size: 5
 at java.util.ArrayList.RangeCheck(Unknown Source)
 at java.util.ArrayList.get(Unknown Source)
 at org.apache.poi.hssf.model.Workbook.getSheetName (Workbook.java:534)
 at
org.apache.poi.hssf.model.Workbook.findSheetNameFromExternSheet (Workbook.java:1867)
 at
org.apache.poi.hssf.model.Workbook.getSheetReferences (Workbook.java:1849)
 at
org.apache.poi.hssf.usermodel.HSSFWorkbook.getSheetReferences (HSSFWorkbook.java:788)
 at
org.apache.poi.hssf.usermodel.HSSFWorkbook.getSheetReferences (HSSFWorkbook.java:79)
 at
org.apache.poi.hssf.record.formula.Ref3DPtg.getSheetName (Ref3DPtg.java:169)
 at
org.apache.poi.hssf.record.formula.Ref3DPtg.toFormulaString (Ref3DPtg.java:182)
 at
org.apache.poi.hssf.model.FormulaParser.toFormulaString (FormulaParser.java:925)
 at
org.apache.poi.hssf.model.FormulaParser.toFormulaString (FormulaParser.java:858)
 at org.apache.poi.hssf.usermodel.HSSFCell.getCellFormula (HSSFCell.java:686)
 at
org.apache.poi.ss.usermodel.FormulaEvaluator.internalEvaluate(FormulaEvaluator.java:326)
 at
org.apache.poi.ss.usermodel.FormulaEvaluator.evaluate(FormulaEvaluator.java:133)
 at org.saxsys.ecpoi.ExChecker.checkFormulaCells(ExChecker.java:111)
 at org.saxsys.ecpoi.ExChecker.checkSheet(ExChecker.java:73)
 at org.saxsys.ecpoi.ExChecker.startCheck(ExChecker.java:55)
 at org.saxsys.ecpoi.Main.<init>(Main.java:69)
 at org.saxsys.ecpoi.Main.main(Main.java:21)

i have no idea whats wrong. have somebody a solution for this problem?
--
Sent from the POI - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@(protected)
For additional commands, e-mail: user-help@(protected)

©2008 java2.5341.com - Jax Systems, LLC, U.S.A.