public CellStyle getNumberFormat(
      int j,
      Map<Integer, CellStyle> decimalFormats,
      Sheet sheet,
      CreationHelper createHelper,
      CellType celltype) {

    int mapPosition = j;

    if (celltype.equals(CellType.TOTAL)) {
      mapPosition = j + 90000;
    } else if (celltype.equals(CellType.SUBTOTAL)) {
      mapPosition = j + 80000;
    } else if (celltype.equals(CellType.CF)) {
      mapPosition = j + 60000;
    }

    if (decimalFormats.get(mapPosition) != null) return decimalFormats.get(mapPosition);

    if (celltype.equals(CellType.CF)) {
      j = this.getCalculatedFieldDecimals();
    }

    String decimals = "";

    for (int i = 0; i < j; i++) {
      decimals += "0";
    }

    CellStyle cellStyle = this.buildDataCellStyle(sheet);
    DataFormat df = createHelper.createDataFormat();
    String format = "#,##0";
    if (decimals.length() > 0) {
      format += "." + decimals;
    }
    cellStyle.setDataFormat(df.getFormat(format));

    if (celltype.equals(CellType.TOTAL)) {
      cellStyle.setFillForegroundColor(IndexedColors.GREY_40_PERCENT.getIndex());
    }
    if (celltype.equals(CellType.CF)) {
      cellStyle.setFillForegroundColor(IndexedColors.DARK_YELLOW.getIndex());
    }
    if (celltype.equals(CellType.SUBTOTAL)) {
      cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
    }

    decimalFormats.put(mapPosition, cellStyle);
    return cellStyle;
  }