更改双精度格式-点到逗号

时间:2019-05-28 08:34:11

标签: java jexcelapi

我必须将Double格式从点更改为逗号。我试试这个:

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

但是它不起作用。您有任何想法如何将点更改为逗号吗?

4 个答案:

答案 0 :(得分:2)

对于(我想)要设置不同CellUnitStyle的ApachePOI库,请使用以下命令:

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

内置以下格式: ApachePOI builtin Formats

答案 1 :(得分:1)

new Number()-我认为这是第三个参数?在这种情况下,不可能在传递双精度值之前对其进行格式化,您需要在单元格格式设置中设置工作表如何显示数字的格式。

还是您有一个像“ 5,3”这样的字符串并想将其转换为双精度字的问题?似乎变量value中已经有一个双精度值。

答案 2 :(得分:1)

您在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

答案 3 :(得分:0)

代码:

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