Hi,

Sounds like a strange case as there is a check right before that line which
should trigger a more specific error message, but somehow it is not
triggered.

Can you create an issue and if possible share a sample workbook which shows
this problem?

Thanks... Dominik.

On Sat, Oct 30, 2021 at 12:20 PM 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
>
>

Reply via email to