我使用Apache POI将Excel函数写入单元格并评估函数。我需要做的是从单元格中删除所有小数点。目前它在每个单元格的末尾得到不必要的两个零。单元格格式如下。但它最终总是得到两个零。
CommonJS
我提到了以下网址和其他几个网站,但无法找到修复错误的方法。
答案 0 :(得分:1)
尝试为工作簿创建单元格样式,并为列中的所有单元格应用"#,##0"
数字格式的此样式:
CellStyle style = workbook.createCellStyle();
DataFormat format = workbook.createDataFormat();
style.setDataFormat(format.getFormat("#,##0"));
cell.setCellStyle(style);
从工作簿创建样式是最佳方式,不会使内存过载。
您还可以调整公式,将数字四舍五入:
=ROUND(A1,0)
答案 1 :(得分:0)
因此,基本上,如果您在Java中使用POI库,则会发生Number列单元格始终返回双精度格式的情况,因为poi仅支持双精度数字格式,我提到了链接here。
要解决此问题,如果您希望获得本栏中显示的原始值,这是简单的解决方案。
如果cell.getNumericCellValue()
返回的结果是一个不带小数的普通数,则返回一个十进制的0,例如,如果它在表410中显示,则返回410.0
因此,当您尝试从单元格获取值时,需要添加以下代码以获取准确的结果。
例如String cellValue = format(cell.getNumericCellValue()+"");
public static String format(String val){
String stringVal = String.valueOf(val);
String[] number = stringVal.split( "[.]" );
if(number.length>1 && number[1].equalsIgnoreCase("0")){
return number[0];
} else {
return val;
}
}