Hi Andreas,

This looks like a bug. Can you raise an issue and add a reproducible test case? 
Once we have a reproducible test case, someone can have a look.


Regards,
PJ






On Saturday 30 October 2021, 11:21:36 IST, Andreas Reichel 
<andr...@manticore-projects.com> wrote: 





Greetings POI team.

Using Apache POI 5.0 I would like evaluate all Cells in order to auto-
size all columns in all sheets:
FormulaEvaluator evaluator = 
workbook.getCreationHelper().createFormulaEvaluator();
for (int i =0; i<sheetParameters.length; i++) {
    Sheet sheet = workbook.getSheetAt(i);
    for (Row r : sheet) {
        for (Cell c : r) {
            if (c.getCellType() == CellType.FORMULA) {
                try {
                    // this can throw an ArrayIndexOutOfBoundsException
                    // at 
org.apache.poi.xssf.usermodel.XSSFEvaluationWorkbook.getSheet(XSSFEvaluationWorkbook.java:77)
                    evaluator.evaluateFormulaCell(c);
                } catch (Exception ignore) {

                }
            }
        }
    }

    for (int k=0; k<=CAPTIONS.length; k++)
        sheet.autoSizeColumn(k);
}

To my surprise this can throw an Exception:

java.lang.ArrayIndexOutOfBoundsException: Index 8 out of bounds for length 8
    at 
org.apache.poi.xssf.usermodel.XSSFEvaluationWorkbook.getSheet(XSSFEvaluationWorkbook.java:77)
    at 
org.apache.poi.ss.formula.WorkbookEvaluator.getSheet(WorkbookEvaluator.java:117)
    at 
org.apache.poi.ss.formula.SheetRefEvaluator.getSheet(SheetRefEvaluator.java:53)
    at 
org.apache.poi.ss.formula.SheetRefEvaluator.getEvalForCell(SheetRefEvaluator.java:48)
    at 
org.apache.poi.ss.formula.SheetRangeEvaluator.getEvalForCell(SheetRangeEvaluator.java:74)
    at 
org.apache.poi.ss.formula.LazyRefEval.getInnerValueEval(LazyRefEval.java:39)
    at 
org.apache.poi.ss.formula.eval.OperandResolver.chooseSingleElementFromRef(OperandResolver.java:217)
    at 
org.apache.poi.ss.formula.eval.OperandResolver.getSingleValue(OperandResolver.java:67)
    at 
org.apache.poi.ss.formula.eval.UnaryMinusEval.evaluate(UnaryMinusEval.java:38)
    at 
org.apache.poi.ss.formula.functions.Fixed1ArgFunction.evaluate(Fixed1ArgFunction.java:33)
    at 
org.apache.poi.ss.formula.OperationEvaluatorFactory.evaluate(OperationEvaluatorFactory.java:140)
    at 
org.apache.poi.ss.formula.WorkbookEvaluator.evaluateFormula(WorkbookEvaluator.java:541)
    at 
org.apache.poi.ss.formula.WorkbookEvaluator.evaluateAny(WorkbookEvaluator.java:275)
    at 
org.apache.poi.ss.formula.WorkbookEvaluator.evaluate(WorkbookEvaluator.java:216)
    at 
org.apache.poi.xssf.usermodel.BaseXSSFFormulaEvaluator.evaluateFormulaCellValue(BaseXSSFFormulaEvaluator.java:56)
    at 
org.apache.poi.ss.formula.BaseFormulaEvaluator.evaluateFormulaCell(BaseFormulaEvaluator.java:184)
    at 
com.manticore.etl.custom.UBASecurityDetails.buildReport(UBASecurityDetails.java:600)
    at 
com.manticore.etl.custom.UBASecurityDetails.main(UBASecurityDetails.java:334)

Should I open an Ticket on that or am I doing something wrong?
Thanks and warm regards
Andreas


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@poi.apache.org
For additional commands, e-mail: user-h...@poi.apache.org

Reply via email to