使用POI获取excel单元格的实际单元格值,而不定义数据类型

时间:2016-10-10 07:58:07

标签: java excel apache apache-poi

我从像这样的.xls文件中捕获我的单元格:

cell.getStringCellValue();

但由于某些单元格是数字的,我必须这样做:

                try
                {
                    cells[colIx] = cell.getStringCellValue();
                } catch (IllegalStateException e)
                {
                    cells[colIx] = String.valueOf(cell.getNumericCellValue());
                }

因为它获得了一个双倍然后将其转换为字符串,这会导致一些不需要的操作,如:

  • 1转换为1.0(不是那么大的问题)
  • 16711680兑换1.671168E7

如何解决此问题并获取实际单元格值而不是某些转换后的数字?此外,所有单元格在excel

中定义为默认单元格

2 个答案:

答案 0 :(得分:4)

您可以使用Apache POI DataFormatter的{​​{1}}方法,因为它将单元格的格式化值作为字符串返回,而不管单元格类型如何。

根据DataFormatter doc -

  

DataFormatter包含格式化存储在的值的方法   细胞。这对于您的报表和GUI演示非常有用   需要显示与Excel中显示的数据完全相同的数据。支持的格式   包括货币,SSN,百分比,小数,日期,电话号码,   邮政编码等。

示例代码

formatCellValue(Cell cell)

答案 1 :(得分:0)

尝试使用cell.getCellType()

  1. 数字
  2. 日期
  3. 科学记数法中的数字