GerardDellemann commented on a change in pull request #234: MM-82 Detect Column 
Types
URL: https://github.com/apache/metamodel/pull/234#discussion_r355350197
 
 

 ##########
 File path: excel/src/main/java/org/apache/metamodel/excel/ExcelUtils.java
 ##########
 @@ -281,6 +348,51 @@ private static String getFormulaCellValue(Workbook wb, 
Cell cell) {
         return cell.getCellFormula();
     }
 
+    private static Object getFormulaCellValueAsObject(final Workbook workbook, 
final Cell cell) {
+        // first try with a cached/precalculated value
+        try {
+            return getDoubleAsNumber(cell.getNumericCellValue());
+        } catch (final Exception e) {
+            if (logger.isInfoEnabled()) {
+                logger.info("Failed to fetch cached/precalculated formula 
value of cell: " + cell, e);
+            }
+        }
+
+        // evaluate cell first, if possible
+        try {
+            if (logger.isInfoEnabled()) {
+                logger
+                        .info("cell {} is a formula. Attempting to evaluate: 
{}", getCellCoordinates(cell), cell
+                                .getCellFormula());
+            }
+
+            final FormulaEvaluator evaluator = 
workbook.getCreationHelper().createFormulaEvaluator();
+
+            // calculates the formula and puts it's value back into the cell
+            final Cell evaluatedCell = evaluator.evaluateInCell(cell);
+
+            return getCellValueAsObject(workbook, evaluatedCell);
+        } catch (final FormulaParseException e) {
+            logger.error("Parse exception occurred while evaluating cell 
formula: " + cell, e);
 
 Review comment:
   ok, I've also changed it in the getFormulaCellValue(...) method then.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to