Java 设置单元格样式,使数字显示为Apache POI的百分比
我正试图让我的单元格中的数字显示为百分比。到目前为止,计算似乎都在进行,但我无法将显示的数字格式化为百分比。到目前为止,我尝试了两种不同的方法Java 设置单元格样式,使数字显示为Apache POI的百分比,java,excel,apache-poi,Java,Excel,Apache Poi,我正试图让我的单元格中的数字显示为百分比。到目前为止,计算似乎都在进行,但我无法将显示的数字格式化为百分比。到目前为止,我尝试了两种不同的方法 CellValue cv = evaluator.evaluate(cell); DecimalFormat df = new DecimalFormat("###.##%"); cell.setCellValue(df.format(Math.abs(cell.getNume
CellValue cv = evaluator.evaluate(cell);
DecimalFormat df = new DecimalFormat("###.##%");
cell.setCellValue(df.format(Math.abs(cell.getNumericCellValue())));
这种方法基本上是对单元格求值,然后给它一个javadecimalFormat
,并使用java创建格式,然后将结果放入单元格中。第二种方法使用一个CellStyle
来尝试它,它如下所示
CellStyle stylePercent = wb.createCellStyle();
stylePercent.setDataFormat(wb.createDataFormat().getFormat("0.000%"));
然后,我将这些值放置在图纸中,然后将样式应用于单元格
这两种方法都不适用于我,总是将0.5的值保留为0.5,而不是50%,甚至是0.5%,它始终与没有样式的情况相同
这也是我运用风格和公式的方式
cell.setCellFormula(""+cellValue+"/(SUM(D"+(row.getRowNum()+1)+" + F"+(row.getRowNum()+1)+" + H"+(row.getRowNum()+1)+"+ J"+(row.getRowNum()+1)+" + L"+(row.getRowNum()+1)+"+ N"+(row.getRowNum()+1)+"+ P"+(row.getRowNum()+1)+"+ R"+(row.getRowNum()+1)+"+ T"+(row.getRowNum()+1)+"+ V"+(row.getRowNum()+1)+"+ X"+(row.getRowNum()+1)+")+ Z"+(row.getRowNum()+1)+")");
cell.setCellStyle(stylePercent);
也许你应该看看这里:这和我的第二种方法是一样的。我将尝试更改当前设置单元格值的位置,我将在设置样式之前进行更改,但我将更改它,然后看看会发生什么。单元格样式不是魔术,您需要将它们指定给单元格才能使其工作!