使用 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 中读取公式字段的主要内容,如果未能解决你的问题,请参考以下文章

缺少Java org.apache.poi.unsupportedfileformatexception

java 关于poi读取excel颜色

如何使用Java和apache poi选择excel中的所有单元格

使用 Apache POI 从 Java 应用程序删除行时 Excel 公式未更新

Java从Apache poi获取excel单元格背景颜色

org.apache.poi.xssf.usermodel.XSSFCell中的Java Excel数据上载错误