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

Imp*_*Fox 2 java apache excel apache-poi

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

cell.getStringCellValue();
Run Code Online (Sandbox Code Playgroud)

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

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

因为它得到一个 double 然后将它转换为一个字符串,这会导致一些不需要的操作,例如:

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

如何解决这个问题并获得实际的单元格值而不是一些转换后的数字?此外,所有单元格在excel中都定义为默认值

Rav*_*mar 5

您可以使用 Apache POIDataFormatterformatCellValue(Cell cell)方法,因为无论单元格类型如何,它都会将单元格的格式化值作为字符串返回。

根据DataFormatter文档 -

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

示例代码

DataFormatter dataFormatter= new DataFormatter();

// Inside loop
String cellValueStr = dataFormatter.formatCellValue(cell);
Run Code Online (Sandbox Code Playgroud)