读取Excel中的数字单元格值,如同在Java中一样
当我阅读excel数值单元格值时,我得到的输出与小数。 例如:79读数为79.0,0.00读数为0.0。 我写的应用程序的代码是:
int type = cell.getCellType(); if (type == HSSFCell.CELL_TYPE_NUMERIC) System.out.println(cell.getNumericCellValue());
这个问题出现在堆栈溢出,所以你最好build议通过类似的许多看到那里的答案!
Excel以文件格式将几乎所有的数字都作为浮点值存储,这就是为什么POI会给你一个数字单元格的双精度数据,就像真正存在的那样。 如果您希望它看起来像在Excel中一样,则需要将针对单元格定义的格式规则应用于该数字。 因此,你要做的和我在这里的回答完全一样。 去引用:
你想要做的是使用DataFormatter类 。 您将这个单元格传递给它,并尽可能返回一个包含Excel将向您显示该单元格的string。 如果你传递一个string单元格,你会得到string。 如果您将格式化规则应用于数字单元格,则会根据格式化数字并将string返回。
对于你的情况,我会假设数字单元格有一个整数格式化规则适用于他们。 如果您要求DataFormatter格式化这些单元格,则会返回一个包含整数string的string。
所有你需要做的是:
// Only need one of these DataFormatter fmt = new DataFormatter(); // Once per cell String valueAsSeenInExcel = fmt.formatCellValue(cell);
我不是100%,这将工作,但我相信你要找的是DecimalFormat 。
我假设你正在使用Apache POI。
你应该考虑玩DataFormat
。 这是一些非常小的草案代码。
否则,如果工作簿中的数据一致,则可能需要将getNumericCellValue
返回的double
四舍五入为int
。
System.out.println((int)Math.round(cell.getNumericCellValue()));
如下所示使用DataFormatter,它将自动检测单元格的格式并生成string输出
DataFormatter formatter = new DataFormatter(); String df2 = formatter.formatCellValue(cell);