例如,
XSSFCellStyle style=(XSSFCellStyle) workbook.createCellStyle();
style.setDataFormat(workbook.createDataFormat().getFormat("#.##"));
productCell.setCellValue(12.4);
productCell.setCellType(Cell.CELL_TYPE_NUMERIC);
productCell.setCellStyle(style);
这会在指定的单元格中显示12.4
。它应该是12.40
。值12
显示为12.
,这是非常不必要的。
如果值为0
,则会显示一个点.
。它应始终显示两个十进制数字 - 0.00
,在这种情况下,无论存储在单元格中的值如何。
如何强制excel始终在数字单元格中显示两位小数?
我使用以下样式之一来显示数字单元格。
XSSFColor commonColor = new XSSFColor(new java.awt.Color(240, 240, 240));
XSSFColor cellBorderColour = new XSSFColor(new java.awt.Color(0, 76, 153));
Font font = workbook.createFont();
font.setBoldweight(Font.BOLDWEIGHT_BOLD);
font.setColor(IndexedColors.DARK_BLUE.index);
XSSFCellStyle style = (XSSFCellStyle) workbook.createCellStyle();
style.setFillForegroundColor(commonColor);
style.setFillPattern(CellStyle.SOLID_FOREGROUND);
style.setAlignment(CellStyle.ALIGN_RIGHT);
style.setFont(font);
style.setBorderLeft(BorderStyle.HAIR);
style.setBorderColor(XSSFCellBorder.BorderSide.LEFT, cellBorderColour);
style.setBorderTop(BorderStyle.HAIR);
style.setBorderColor(XSSFCellBorder.BorderSide.TOP, cellBorderColour);
style.setBorderRight(BorderStyle.HAIR);
style.setBorderColor(XSSFCellBorder.BorderSide.RIGHT, cellBorderColour);
style.setBorderBottom(BorderStyle.DOUBLE);
style.setBottomBorderColor(cellBorderColour);
我应用了一些excel公式来对数字单元格执行一些计算,这些数字单元格应该在数字单元格上应用数字格式(向上舍入一半)之后执行。
答案 0 :(得分:31)
在Excel格式中,#
表示"仅在需要时将数字放在此处#34;,但0
表示"始终在此处放置数字,即使它& #39; s是不必要的0"。您可以准确指定the data format in Apache POI as you would in Excel itself。如果您希望显示0
数字,则需要使用0
s作为格式数字。尝试
style.setDataFormat(workbook.createDataFormat().getFormat("0.00"));
这会使值0
显示为0.00
,将12.4
显示为12.40
。
答案 1 :(得分:0)
这个对我有用:
设置单元格样式
private CellStyle formatDecimalStyle(Workbook workbook, CreationHelper createHelper) {
CellStyle style = workbook.createCellStyle();
style.setDataFormat(createHelper.createDataFormat().getFormat("0.00"));
return style;
}
在单元格上应用样式
CellStyle style = formatDecimalStyle(workbook, createHelper);
Cell creditAmountCell = row.createCell(3);
creditAmountCell.setCellValue(amount);
creditAmountCell.setCellStyle(style);