Apache POI获取Excel单元的字符串值
Contents
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 文件。它还使用Sheet 、Row 和 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对其进行评估。否则,我们将返回字符串表示而不进行任何评估。