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

Java 使用POI获取excel单元格的实际单元格值,无需定义数据类型,java,excel,apache,apache-poi,Java,Excel,Apache,Apache Poi,我从.xls文件捕获我的单元格,如下所示: cell.getStringCellValue(); 但由于某些单元格是数字的,因此我必须这样做: try { cells[colIx] = cell.getStringCellValue(); } catch (IllegalStateException e) {

我从.xls文件捕获我的单元格,如下所示:

cell.getStringCellValue();
但由于某些单元格是数字的,因此我必须这样做:

                try
                {
                    cells[colIx] = cell.getStringCellValue();
                } catch (IllegalStateException e)
                {
                    cells[colIx] = String.valueOf(cell.getNumericCellValue());
                }
由于它得到一个double,然后将其转换为字符串,因此会导致一些不需要的操作,如:

  • 1转换为1.0(不是什么大问题)
  • 16711680转换为1.671168E7
我如何解决这个问题,并获得实际的单元格值,而不是一些转换后的数字?此外,所有单元格在excel中都定义为默认值

请尝试使用cell.getCellType()

  • 数字的
  • 日期
  • 科学记数法中的数字

  • 您可以使用ApachePOI
    DataFormatter
    formatCellValue(Cell Cell)
    方法,因为它以字符串形式返回单元格的格式化值,而不考虑单元格类型

    据博士说-

    DataFormatter包含格式化存储在 牢房。这对于报告和GUI演示非常有用 需要精确显示Excel中显示的数据。支持格式 包括货币、SSN、百分比、小数、日期、电话号码、, 邮政编码等

    示例代码

    DataFormatter dataFormatter= new DataFormatter();
    
    // Inside loop
    String cellValueStr = dataFormatter.formatCellValue(cell);