当前位置: 首页 > 知识库问答 >
问题:

使用Apache poi在Excel单元格中始终显示两个小数点

商皓
2023-03-14

例如

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.,这是非常不必要的。

如果值为< code>0,则显示一个点< code >。。它应该总是显示两个十进制数字- 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 公式对数字单元格执行一些计算,这些计算在对数字单元格应用数字格式(向上舍入一半)后预期执行。

共有2个答案

姬魁
2023-03-14

这个对我有用:

>

  • 设置单元格样式

    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);
    

  • 谢学名
    2023-03-14

    在Excel格式中,#表示“仅在需要时在此处放置数字”,但0表示“始终在此处放置数字,即使它是不必要的0”。您可以在Apache POI中指定数据格式,就像在Excel本身中一样。如果您希望显示0数字,那么您需要使用0s作为格式数字。试试

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

    这将使值 0 显示为 0.00,12.4 显示为 12.40

     类似资料:
    • 问题内容: 我有一个ng模型的浮点值,我希望始终在其小数点后2位显示: 当“ myNumb”为小数时,此方法适用于大多数情况。但是,如果“ myNumb”的小数位数少于2个(3.2)或整数(30), 则不会强制显示小数点后2位。如何在字段中强制显示小数点后2位 问题答案: AngularJS-输入数字两位小数可以帮助…过滤: 设置正则表达式以使用ng-pattern验证输入。在这里,我只接受最多2

    • 我在excel和VBA方面还算新手。 如果一直试图找到一种方法来实现下面的场景,但不能。我也试着在网上搜索解决方案,但找不到。

    • 问题内容: 我想格式化我的数字,使其始终显示2个小数位,并在适用的情况下四舍五入。 例子: 我一直在使用这个: 但它显示为,而不是。 问题答案: (Math.round(num * 100) / 100).toFixed(2); 现场演示 请注意,它将 四舍五入 到小数点后两位,因此输入将返回。

    • 我正在使用Poi.jar从excel表输入,想知道如何检查单元格是否为空。 现在我使用下面的代码。

    • 问题内容: 我想显示: 如 和: 如 不管小数点的长度或是否有任何小数位,我都希望显示带有2个小数位的a,并且我想以一种有效的方式来做到这一点。目的是显示货币值。 例如, 问题答案: 我想您可能正在使用模块中的对象?(如果您需要精确到小数点后两位精确到两位数且任意大的数字,那么绝对应该如此,这就是您的问题标题所暗示的……) 如果是这样,文档的“ 十进制常见问题解答” 部分将包含一个问题/答案对,这

    • 我正在使用Apache POI将Excel函数写入单元格并计算该函数。我需要做的是从单元格中删除所有小数点。目前,它在每个单元格值的末尾得到了不必要的两个零。单元格格式如下所示。但最后总是得到两个零。 我参考了以下URL和其他几个网站,但找不到修复错误的方法。 链接1 链接2 注意我将Apache POI版本3.14与Spring 4.3.1一起使用。释放。