code: private CellFormatResult getFormulaCellValue(final Cell cell, final Locale locale) {
  
          final CellType cellType = cell.getCellTypeEnum();
          assert cellType == CellType.FORMULA;
  
          final Workbook workbook = cell.getSheet().getWorkbook();
          final CreationHelper helper = workbook.getCreationHelper();
          final FormulaEvaluator evaluator = helper.createFormulaEvaluator();
  
          try {
              final CellValue value = evaluator.evaluate(cell);
              final POIEvaluatedCell evaluatedCell = new POIEvaluatedCell(cell, value);
  
              switch(value.getCellTypeEnum()) {
  
                  case BOOLEAN:
                      return getCellValue(evaluatedCell, locale);
  
                  case STRING:
                      return getCellValue(evaluatedCell, locale);
  
                  case NUMERIC:
                      return getCellValue(evaluatedCell, locale);
  
                  case ERROR:
                      return getErrorCellValue(value.getErrorValue(), locale);
  
                  default:
                      final CellFormatResult result = new CellFormatResult();
                      result.setCellType(FormatCellType.Unknown);
                      result.setText("");
                      return result;
              }
  
          } catch(Exception e) {
              if(isThrowFailEvaluateFormula()) {
                  throw new FormulaEvaluateException(cell, e);
              } else {
                  return getErrorCellValue(cell.getErrorCellValue(), locale);
              }
          }
  
      }
docs: 式が設定されているセルの値を評価する。
  @param cell
  @param locale
  @return