poi库中的valuate(cell)vsvaluateInCell(cell)的区别?

时间:2018-11-29 06:38:56

标签: java excel apache-poi

我正在研究poi库。我想评估一些超过255列的公式单元格。

    XSSFRow row219 = sheet.createRow(219);
    XSSFCell vv0 = (XSSFCell) row219.createCell(255);
    vv0.setCellValue(40);

    XSSFCell vv = (XSSFCell) row219.createCell(256);
    vv.setCellValue(70);
    XSSFCell cell = sheet.createRow(1).createCell(1);
    cell.setCellFormula("OFFSET(IV220,0,1)");
    XSSFFormulaEvaluator evaluator =
            (XSSFFormulaEvaluator) workbook.getCreationHelper().createFormulaEvaluator();
    evaluator.evaluateInCell(cell);

但是它在单元格中给出结果 #REF!。但是如果我使用下面的代码,我会得到预期的结果

    XSSFRow row219 = sheet.createRow(219);
    XSSFCell vv0 = (XSSFCell) row219.createCell(255);
    vv0.setCellValue(40);

    XSSFCell vv = (XSSFCell) row219.createCell(256);
    vv.setCellValue(70);

    XSSFCell cell = sheet.createRow(1).createCell(1);
    cell.setCellFormula("OFFSET(IV220,0,1)");
    XSSFFormulaEvaluator evaluator =
            (XSSFFormulaEvaluator) workbook.getCreationHelper().createFormulaEvaluator();

    evaluator.evaluate(cell);

然后我的期望值是70。

我想知道 evaluator.evaluateInCell(cell); evaluator.evaluate(cell); 之间的区别,尽管它在poi库中使用了相同的抽象类< / p>

 protected abstract CellValue evaluateFormulaCellValue(Cell var1);

和该抽象类BaseXSSFFormulaEvaluator的相同实现,但是为什么结果不同?

注意:我正在使用poi库3.17

0 个答案:

没有答案