我必须将Double格式从点更改为逗号。我试试这个:
DecimalFormat df = new DecimalFormat("#,00",
DecimalFormatSymbols.getInstance(Locale.GERMANY));
selectedSheet.addCell(new Number(selectedCellColumn,
selectedCellRow,
Double.valueOf(df.format(value)));
但是它不起作用。您有任何想法如何将点更改为逗号吗?
答案 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