总是在使用Apache poi的excel单元格中显示两个小数点

例如,

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公式来对数字单元格执行一些计算,这些数字单元格将在数字单元格上应用数字格式(四舍五入)之后执行。

在Excel格式中, #表示“只在需要的时候在这里放置一个数字”,而0表示“总是在这里放置一个数字,即使这是不必要的0”。 您可以像在Excel本身一样指定Apache POI中的数据格式 。 如果你想要显示0位,那么你需要使用0作为格式化数字。 尝试

 style.setDataFormat(workbook.createDataFormat().getFormat("0.00")); 

这将使值0显示为0.0012.412.40