使用Apache POI获取Excel单元格的字符串值

2025/04/12

1. 概述

Microsoft Excel单元格可以具有不同类型,如字符串、数字、布尔值和公式。

在本快速教程中,我们将展示如何使用Apache POI将单元格值读取为字符串(无论单元格类型如何)。

2. Apache POI

首先,我们需要将poi依赖添加到项目pom.xml文件中:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.3.0</version>
</dependency>

Apache POI使用Workbook接口来表示Excel文件,它还使用SheetRowCell接口来建模Excel文件中不同级别的元素。在Cell级别,我们可以使用它的getCellType()方法来获取单元格类型。Apache POI支持以下单元格类型:

  • BLANK
  • BOOLEAN
  • ERROR
  • FORMULA
  • NUMERIC
  • STRING

如果我们想在屏幕上显示Excel文件的内容,我们希望获取单元格的字符串表示形式,而不是其原始值。因此,对于非STRING类型的单元格,我们需要将其数据转换为字符串值

3. 获取单元格字符串值

我们可以使用DataFormatter来获取Excel单元格的字符串值,它可以获取单元格中存储值的格式化字符串表示形式。例如,如果某个单元格的数值是1.234,并且该单元格的格式规则是保留两位小数,那么我们将获得字符串表示形式“1.23”:

Cell cell = // a numeric cell with value of 1.234 and format rule "0.00"

DataFormatter formatter = new DataFormatter();
String strValue = formatter.formatCellValue(cell);

assertEquals("1.23", strValue);

因此,DataFormatter.formatCellValue()的结果就是与Excel中显示的字符串完全一样的显示字符串。

4. 获取公式单元格的字符串值

如果单元格的类型为FORMULA,则上述方法将返回原始公式字符串,而不是计算出的公式值。因此,为了获取公式值的字符串表示形式,我们需要使用FormulaEvaluator来计算公式

Workbook workbook = // existing Workbook setup
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();

Cell cell = // a formula cell with value of "SUM(1,2)"

DataFormatter formatter = new DataFormatter();
String strValue = formatter.formatCellValue(cell, evaluator);

assertEquals("3", strValue);

此方法适用于所有单元格类型,如果单元格类型为FORMULA,我们将使用给定的FormulaEvaluator对其进行求值;否则,我们将返回不进行任何求值的字符串表示形式。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章