private void updateCellObjectValue(Cell cell, Object value, Styles styles) {
        if (value instanceof BigDecimal) {
            setBigDecimalValue(cell, numberFormat.format(value), (BigDecimal) value, styles);
        }
        else if (value instanceof Number) {
            setNumberValue(cell, (Number) value, styles);
        }
        else if (value instanceof LocalDate) {
            setLocalDateValue(cell, (LocalDate) value, styles);
        }
        else if (value instanceof LocalDateTime) {
            setLocalDateTimeValue(cell, (LocalDateTime) value, styles);
        }
        else if (value instanceof LocalTime) {
            setLocalTimeValue(cell, (LocalTime) value, styles);
        }
        else if (value instanceof Date) {
            setDateValue(cell, (Date) value, styles);
        }
        else {
            cell.setCellStyle(styles.getDefaultStyle());
            cell.setCellValue(createRichTextString(Objects.toString(value, Constants.EMPTY_STRING)));
        }
    }
If value is an explicitly set value, then use that value to update the cell, otherwise if
ExcelOptions.isStronglyTypedCells = true then for cells check:
<pre>
Numeric - String that are all numbers make them a numeric cell
Currency - Convert to currency cell so math can be done in Excel
String - fallback to just a normal string cell
</pre>
Possible future enhancement of Date cells as well.

@param column the column from which value comes
@param cell the cell to operate on
@param value the ColumnValue value to put in the cell
primefaces/src/main/java/org/primefaces/util/ExcelStylesManager.java