private String toExcelPattern(String pattern, DecimalFormatSymbols symbols) {

        StringBuilder buffer = new StringBuilder(pattern.length());
        for (int i = 0; i < pattern.length(); i++) {
            char character = pattern.charAt(i);
            if (character == symbols.getDecimalSeparator()) {
                buffer.append(".");
            }
            else if (character == symbols.getGroupingSeparator()) {
                buffer.append(",");
            }
            else if (character == symbols.getPatternSeparator()) {
                buffer.append(";");
            }
            else if (character == CurrencyValidator.CURRENCY_SYMBOL) {
                buffer.append("\"").append(symbols.getCurrencySymbol()).append("\"");
            }
            else {
                buffer.append(character);
            }
        }

        return buffer.toString();
    }
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