读取Excel单元格数字值作为他们在Java(Read Excel Numeric cell val

2019-09-02 11:52发布

当我读的Excel数字的单元格值,我收到带有小数输出。 例如:79读取作为79.0,0.00阅读0.0。 我已经写了我的应用程序的代码:

int type = cell.getCellType();
if (type == HSSFCell.CELL_TYPE_NUMERIC)
  System.out.println(cell.getNumericCellValue());

Answer 1:

这个问题出现在堆栈溢出了很多,所以你会得到很好的建议,以期待通过许多相似的人,看看有答案!

Excel存储几乎是在文件格式为浮点值,这是所有的数字,为什么POI会给你回一个双对数字小区,这就是是真的存在。 如果你希望它看起来像它在Excel中那样,你需要申请对细胞的数量来定义的格式规则。 因此,你想要做的完全一样的东西在这里我的答案 。 报价:

你想要做的是使用DataFormatter类 。 你通过这一个细胞,它会尽力回报你什么包含Excel中会告诉你该小区的字符串。 如果你传递一个字符串单元格,你会得到的字符串返回。 如果你通过它与格式规则数字小区中应用,它会格式化基于它们的数量,并给你的字符串返回。

对于你的情况,我会假设数字单元应用了整数格式规则。 如果你问DataFormatter格式化这些细胞,它会给你回在它的整数字符串的字符串。

所有你需要做的是:

// Only need one of these
DataFormatter fmt = new DataFormatter();

// Once per cell
String valueAsSeenInExcel = fmt.formatCellValue(cell);


Answer 2:

我不是100%,这会工作,但我相信你在找什么是DecimalFormat的 。



Answer 3:

我假设你使用Apache POI。

你应该考虑玩DataFormat秒。 下面是一些很小的代码草案。

否则,如果在您的工作簿中的数据是一致的,你可能想圆了double由归国getNumericCellValueint

System.out.println((int)Math.round(cell.getNumericCellValue()));


Answer 4:

使用DataFormatter为下,它会自动检测单元格的格式,并产生字符串输出

                    DataFormatter formatter = new DataFormatter();
                    String df2 = formatter.formatCellValue(cell);


文章来源: Read Excel Numeric cell values as they are in Java