当我读的Excel数字的单元格值,我收到带有小数输出。 例如:79读取作为79.0,0.00阅读0.0。 我已经写了我的应用程序的代码:
int type = cell.getCellType();
if (type == HSSFCell.CELL_TYPE_NUMERIC)
System.out.println(cell.getNumericCellValue());
当我读的Excel数字的单元格值,我收到带有小数输出。 例如:79读取作为79.0,0.00阅读0.0。 我已经写了我的应用程序的代码:
int type = cell.getCellType();
if (type == HSSFCell.CELL_TYPE_NUMERIC)
System.out.println(cell.getNumericCellValue());
这个问题出现在堆栈溢出了很多,所以你会得到很好的建议,以期待通过许多相似的人,看看有答案!
Excel存储几乎是在文件格式为浮点值,这是所有的数字,为什么POI会给你回一个双对数字小区,这就是是真的存在。 如果你希望它看起来像它在Excel中那样,你需要申请对细胞的数量来定义的格式规则。 因此,你想要做的完全一样的东西在这里我的答案 。 报价:
你想要做的是使用DataFormatter类 。 你通过这一个细胞,它会尽力回报你什么包含Excel中会告诉你该小区的字符串。 如果你传递一个字符串单元格,你会得到的字符串返回。 如果你通过它与格式规则数字小区中应用,它会格式化基于它们的数量,并给你的字符串返回。
对于你的情况,我会假设数字单元应用了整数格式规则。 如果你问DataFormatter格式化这些细胞,它会给你回在它的整数字符串的字符串。
所有你需要做的是:
// Only need one of these
DataFormatter fmt = new DataFormatter();
// Once per cell
String valueAsSeenInExcel = fmt.formatCellValue(cell);
我不是100%,这会工作,但我相信你在找什么是DecimalFormat的 。
我假设你使用Apache POI。
你应该考虑玩DataFormat
秒。 下面是一些很小的代码草案。
否则,如果在您的工作簿中的数据是一致的,你可能想圆了double
由归国getNumericCellValue
来int
。
System.out.println((int)Math.round(cell.getNumericCellValue()));
使用DataFormatter为下,它会自动检测单元格的格式,并产生字符串输出
DataFormatter formatter = new DataFormatter();
String df2 = formatter.formatCellValue(cell);