您的当前位置:首页正文

easyexcel读取数据公式

2023-09-08 来源:步旅网
easyexcel读取数据公式

EasyExcel 是一款基于 Java 实现的操作 Excel 的开源库,它提供了一套简单易用的 API,使得读取和操作 Excel 数据变得更加方便。下面将详细介绍如何使用 EasyExcel 读取 Excel 数据和公式。

1. 引入 EasyExcel 依赖

首先需要在项目中引入 EasyExcel 的依赖。在 Maven 项目中,可以直接在 pom.xml 文件中添加以下依赖:

```xml

easyexcel 2.5.0 ```

2. 创建读取 Excel 数据的监听器

EasyExcel 提供了一种监听器模式来读取 Excel 数据。可以通过创建一个继承自 AnalysisEventListener 的监听器类来监听 Excel 数据的读取事件。例如:

```java

public class ExcelListener extends AnalysisEventListener

public void invoke(ExcelData data, AnalysisContext context) //读取到一行数据后的处理逻辑 }

public void doAfterAllAnalysed(AnalysisContext context) //读取完所有数据后的处理逻辑 } ```

在这个监听器类中,通过重写 invoke 和 doAfterAllAnalysed 方法来处理读取到的数据。

3. 读取 Excel 数据

使用 EasyExcel 读取 Excel 数据的步骤如下: ```java

public class ExcelReader

public static void main(String[] args) String fileName = \"path/to/excel/file.xlsx\"; ExcelListener listener = new ExcelListener(; // 初始化 ExcelReader

ExcelReader excelReader = new ExcelReader(new FileInputStream(fileName), null, listener);

// 读取所有 sheet

List sheets = excelReader.getSheets(; for (Sheet sheet : sheets)

// 设置读取的 sheet 及读取的行范围 excelReader.read(sheet); }

//读取完毕后,释放资源 excelReader.finish(; } ```

在上面的代码中,首先创建一个 ExcelListener 对象作为监听器,然后通过 ExcelReader 类的构造方法传入一个 FileInputStream 对象、读取的行范围和监听器对象。最后通过调用 read 方法来读取 Excel 数据。

4.读取公式

EasyExcel 读取 Excel 公式的原理是通过获取公式的结果值来实现。在 EasyExcel 中,可以通过创建一个继承自 CellValueTypeStrategy 的公式类型策略类来实现获取公式结果的逻辑。例如:

```java

public class FormulaValueTypeStrategy extends DefaultCellValueTypeStrategy

public Object convert(Object cellValue, CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration)

int rowIndex = cellData.getRowIndex(; int columnIndex = cellData.getColumnIndex(;

FormulaEvaluator evaluator = cellData.getFormulaEvaluator(; CellValue cellValue =

evaluator.evaluate(sheet.getRow(rowIndex).getCell(columnIndex));

return convertToJavaObject(cellValue, evaluator); }

private Object convertToJavaObject(CellValue cellValue, FormulaEvaluator evaluator)

CellType cellType = cellValue.getCellType(; switch (cellType) case BOOLEAN:

return cellValue.getBooleanValue(; case NUMERIC:

return cellValue.getNumberValue(;

case STRING:

return cellValue.getStringValue(; default:

throw new IllegalArgumentException(\"Unsupported cell type: \" + cellType);

} } ```

在上面的例子中,首先获取当前单元格的行索引和列索引,然后根据公式计算结果的类型来选择相应的处理逻辑。

为了让 EasyExcel 使用自定义的公式类型策略,需要在读取 Excel 数据之前设置全局的公式类型策略。例如:

```java

public class ExcelReader

public static void main(String[] args) String fileName = \"path/to/excel/file.xlsx\"; ExcelListener listener = new ExcelListener(; // 初始化 ExcelReader

ExcelReader excelReader = new ExcelReader(new FileInputStream(fileName), null, listener);

//设置公式类型策略

excelReader.setFormulaCellValueStrategies(Arrays.asList(new FormulaCellTypeStrategy());

// 读取所有 sheet

List sheets = excelReader.getSheets(; for (Sheet sheet : sheets)

// 设置读取的 sheet 及读取的行范围 excelReader.read(sheet); }

//读取完毕后,释放资源 excelReader.finish(; } ```

在上面的代码中,通过调用 setFormulaCellValueStrategies 方法设置全局公式类型策略。在这个例子中,使用的是 FormulaCellTypeStrategy 类作为全局公式类型策略。

以上就是使用 EasyExcel 读取 Excel 数据和公式的基本步骤。通过使用 EasyExcel 库,可以更加方便地读取和处理 Excel 文件中的数据和公式。

因篇幅问题不能全部显示,请点此查看更多更全内容