使用 Apache POI 从 Java 中的 Excel 中读取公式字段

Posted

技术标签:

【中文标题】使用 Apache POI 从 Java 中的 Excel 中读取公式字段【英文标题】:Reading Formula fields from Excel in Java using Apache POI 【发布时间】:2015-04-16 12:55:46 【问题描述】:

我正在尝试使用 Apache POI 从 Excel 中读取公式值。我几乎能够完美地读取所有值。我的代码sn-p:

case Cell.CELL_TYPE_FORMULA:
        switch(cell.getCachedFormulaResultType()) 
         case Cell.CELL_TYPE_NUMERIC:
           e=cell.getNumericCellValue();
          break;
          case Cell.CELL_TYPE_STRING
           e=cell.getRichStringCellValue();
              break;
           

这在大多数情况下都可以正常工作,例如整数和浮点值,但是当公式与 % 一起使用时,就会出现问题。

当公式=1234-1200 时读取值=34 但是当公式= 100%-40%时,它的读数值= 0.6而不是60%。

如何克服这个问题?

【问题讨论】:

您是否尝试过使用DataFormatter? 【参考方案1】:

在您的案例 Cell.CELL_TYPE_NUMERIC: 语句中尝试这样的事情

if (cell.getCellStyle().getDataFormatString().contains("%")) 
    // Detect Percent Values 
    Double value = cell.getNumericCellValue() * 100;
    System.out.println("Percent value found = " + value.toString() +"%");
 else 
    Double value = cell.getNumericCellValue();
    System.out.println("Non percent value found = " + value.toString());

【讨论】:

高兴.. @rajasekhar

以上是关于使用 Apache POI 从 Java 中的 Excel 中读取公式字段的主要内容,如果未能解决你的问题,请参考以下文章