Contents

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

1. 概述

Microsoft Excel 单元格可以有不同的类型,如字符串、数字、布尔值和公式。 在本快速教程中,我们将展示如何使用 Apache POI 将单元格值读取为字符串(无论单元格类型如何)。

2. Apache POI

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

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

Apache POI 使用 Workbook 界面来表示 Excel 文件。它还使用SheetRow 和 Cell 接口对 Excel 文件中不同级别的元素进行建模。在Cell级别,我们可以使用它的getCellType() 方法来获取cell 类型 。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对其进行评估。否则,我们将返回字符串表示而不进行任何评估。