Изменить двойной формат - точка на запятую - PullRequest
0 голосов
/ 28 мая 2019

Я должен изменить формат Double с точки на запятую. Я пытаюсь это:

DecimalFormat df = new DecimalFormat("#,00",
                   DecimalFormatSymbols.getInstance(Locale.GERMANY)); 
selectedSheet.addCell(new Number(selectedCellColumn, 
                                 selectedCellRow,
                                 Double.valueOf(df.format(value)));

но это не работает. У вас есть идеи, как вы можете изменить точку на запятую?

Ответы [ 4 ]

2 голосов
/ 28 мая 2019

Для (я предполагаю) библиотеки ApachePOI для установки другого CellUnitStyle используйте это:

CellStyle unitStyle = workbook.createCellStyle();
unitStyle.setDataFormat((short) BuiltinFormats.getBuiltinFormat("#,##0.00"));
cell.setCellValue(value);
cell.setCellStyle(unit);

Доступны следующие форматы: Встроенные форматы ApachePOI

1 голос
/ 28 мая 2019

У вас есть таблица символов в документе java DecimalFormat:

Symbol   Location    Localized?    Meaning
------------------------------------------
0        Number      Yes           Digit
#        Number      Yes           Digit, zero shows as absent
.        Number      Yes           Decimal separator or monetary decimal separator
-        Number      Yes           Minus sign
,        Number      Yes           Grouping separator
etc...

Вы использовали разделитель группировки ,, но вы хотели использовать десятичный разделитель ., поэтому измените свойстрока от #,00 до #.00:

DecimalFormat df = new DecimalFormat("#.00", DecimalFormatSymbols.getInstance(Locale.GERMANY));
String format = df.format(3.23456);
System.out.println(format); // prints 3,23
1 голос
/ 28 мая 2019

new Number() - Я полагаю, что в качестве третьего аргумента это значение удваивается?В этом случае форматирование двойного значения перед его передачей невозможно, вам нужно установить формат отображения листов в настройках форматирования ячеек.

Или проблема в том, что у вас естьСтрока типа "5,3" и хотите преобразовать его в двойной?Похоже, varaible value уже имеет двойное значение.

0 голосов
/ 28 мая 2019

код:

double value = 123.12345;
DecimalFormatSymbols decimalFormatSymbols = DecimalFormatSymbols.getInstance(Locale.GERMANY);
decimalFormatSymbols.setDecimalSeparator(',');
DecimalFormat df = new DecimalFormat("#.###", decimalFormatSymbols);
System.out.println(df.format(value));
selectedSheet.addCell(new Number(selectedCellColumn, selectedCellRow, Double.valueOf(df.format(value)));

Выход:

123,123
...