我正在研究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