【问题标题】:Get actual cell value of excel cell with POI without defining a datatype使用 POI 获取 excel 单元格的实际单元格值而不定义数据类型
【发布时间】:2016-10-10 07:58:07
【问题描述】:

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

cell.getStringCellValue();

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

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

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

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

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

【问题讨论】:

    标签: java excel apache apache-poi


    【解决方案1】:

    您可以使用 Apache POI DataFormatterformatCellValue(Cell cell) 方法,因为它将单元格的格式化值作为字符串返回,而不管单元格类型如何。

    根据DataFormatterdoc-

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

    示例代码

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

    【讨论】:

      【解决方案2】:

      尝试使用 cell.getCellType()

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多