Формат номера EPPlus

У меня есть лист Excel, сгенерированный с помощью Epplus, я испытываю некоторые болевые точки, и я хочу, чтобы меня направил тот, кто решил аналогичную задачу. Мне нужно применить форматирование чисел к двойному значению, и я хочу представить его в excel, как это.

  • 8 → 8,0
  • 12 → 12,0
  • 14,54 → 14,5
  • 0 → 0,0

Вот мой код

ws.Cells[row, col].Style.Numberformat.Format = "##0.0";

Окончательный файл excel всегда добавляет E + 0 к концу этого формата и поэтому вместо этого отображает конечные значения.

  • 8 → 8.0E + 0
  • 12 → 12.0E + 0
  • 14.54 → 14.5E + 0
  • 0 → 000.0E + 0

Когда я проверяю ячейки формата созданного листа excel, я вижу, что мой формат выглядит как ## 0.0E + 2 вместо ## 0.0, который я применил. Что может быть неправильным?

Ответ 1

Вот несколько вариантов числового формата для EPPlus:

//integer (not really needed unless you need to round numbers, Excel will use default cell properties)
ws.Cells["A1:A25"].Style.Numberformat.Format = "0";

//integer without displaying the number 0 in the cell
ws.Cells["A1:A25"].Style.Numberformat.Format = "#";

//number with 1 decimal place
ws.Cells["A1:A25"].Style.Numberformat.Format = "0.0";

//number with 2 decimal places
ws.Cells["A1:A25"].Style.Numberformat.Format = "0.00";

//number with 2 decimal places and thousand separator
ws.Cells["A1:A25"].Style.Numberformat.Format = "#,##0.00";

//number with 2 decimal places and thousand separator and money symbol
ws.Cells["A1:A25"].Style.Numberformat.Format = "€#,##0.00";

//percentage (1 = 100%, 0.01 = 1%)
ws.Cells["A1:A25"].Style.Numberformat.Format = "0%";

//accounting number format
ws.Cells["A1:A25"].Style.Numberformat.Format = "_-$* #,##0.00_-;-$* #,##0.00_-;_-$* \"-\"??_-;[email protected]_-";

Не меняйте десятичный разделитель и разделитель тысяч на вашу собственную локализацию. Excel сделает это за вас.

По запросу некоторые параметры форматирования DateTime.

//default DateTime pattern
worksheet.Cells["A1:A25"].Style.Numberformat.Format = DateTimeFormatInfo.CurrentInfo.ShortDatePattern;

//custom DateTime pattern
worksheet.Cells["A1:A25"].Style.Numberformat.Format = "dd-MM-yyyy HH:mm";

Ответ 2

Для списка стандартных/типовых форматов можно было бы:

  1. в Excel, щелкните правой кнопкой мыши по любой ячейке, выберите "Формат ячеек"
  2. в списке Категория: выберите нужный формат
  3. затем выберите "Пользовательский" и в текстовом поле "Тип" отобразится строка желаемого/выбранного формата.

Это работает для любого типа данных в XL.