I want to format some number cells, with a comma as thousands separator. For example:
12 -> 12
1200 -> 1,200
12000 -> 12,000
12000000 -> 12,000,000
120000000 -> 120,000,000
I have the following code. What should I use as formatStr
? Is there an easy way? Or do I have to detect the number of zeros in order to produce something like this #,###,###
?
String formatStr = "";
HSSFCellStyle style = workbook.createCellStyle();
HSSFDataFormat format = workbook.createDataFormat();
style.setDataFormat(format.getFormat(formatStr));
cell.setCellStyle(style);
cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
Keep in mind that I'm dealing with numbers. The cell type will be numeric, not string.
Update
The character used as the thousands separatorIn the United States, this character is a comma (,). In Germany, it is a period (.). Thus one thousand and twenty-five is displayed as 1,025 in the United States and 1.025 in Germany. In Sweden, the thousands separator is a space.
Just add this:
style.setDataFormat(HSSFDataFormat.getBuiltinFormat("#,##0.00"));
and it will follow the format you want.
Just #,###
or #,##0
should be sufficient. Excel interprets this as having thousands separators every three digits (not just before the last three, which I infer is what you were expecting).
In the spirit of teaching a man to fish, this is how you can find out for yourself:
Format as Number, 0 decimal places, with 1000 separator:
Click OK, then re-open the number format dialog and go to Custom. Have a look at the formatting code ("Type"). It says #,##0
, which for me gives the exact same result as #,###
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With