我在Excel工作表中使用了Formulas并使用这段代码来评估工作簿:
FormulaEvaluator evaluato=wb.getCreationHelper().createFormulaEvaluator();
evaluator.clearAllCachedResultValues();
evaluator.evaluateAll();
但是每次我想从Excel文件中读取数据时,我都必须使用它,这会增加时间,因为更新值需要10秒。
因此,有任何方法可以在事件的预处理中使用此代码,然后使用评估结果更新工作表。因此,每次我想从Excel中获取值时,我都不必使用此代码。
答案 0 :(得分:1)
您也可以评估单个单元格,因此如果您只对电子表格某些部分的值感兴趣,那么仅评估这些单元格就足够了,因此可以通过“evaluateAll”节省所有其他单元格所需的时间“,例如
switch (evaluator.evaluateFormulaCell(cell)) {
case Cell.CELL_TYPE_BOOLEAN:
System.out.println(cell.getBooleanCellValue());
break;
case Cell.CELL_TYPE_NUMERIC:
System.out.println(cell.getNumericCellValue());
break;
case Cell.CELL_TYPE_STRING:
System.out.println(cell.getStringCellValue());
break;
case Cell.CELL_TYPE_BLANK:
break;
case Cell.CELL_TYPE_ERROR:
System.out.println(cell.getErrorCellValue());
break;
// CELL_TYPE_FORMULA will never occur
case Cell.CELL_TYPE_FORMULA:
break;
}
另请参阅https://poi.apache.org/spreadsheet/eval.html上的文档以获取更多说明和提示。