Java中POI读取Excel数据
在Java开发中,我们经常需要读取和操作Excel文件中的数据。Apache POI是一个流行的Java库,可以用于读取、写入和操作各种类型的Office文档,包括Excel。本文将介绍如何使用POI库在Java中读取Excel数据,并提供代码示例。
了解Apache POI
Apache POI是一个开源的Java库,用于处理Microsoft Office格式的文件,包括Excel、Word和PowerPoint等。POI提供了一组API,可以轻松地创建、读取、修改和写入这些文件。在本文中,我们将重点介绍POI的Excel部分。
准备工作
首先,我们需要在项目中添加POI的依赖。可以通过Maven或手动下载POI的JAR文件并添加到项目的类路径中。下面是使用Maven添加POI依赖的示例:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
使用POI读取Excel数据
在开始之前,我们需要准备一个Excel文件作为示例数据。假设我们有一个名为"example.xlsx"的Excel文件,其中包含一个名为"Sheet1"的工作表,包含姓名、年龄和性别等列。
首先,我们需要创建一个File
对象来表示要读取的Excel文件。然后,我们可以使用WorkbookFactory
类的create()
方法加载工作簿。下面是读取Excel文件并加载工作簿的代码示例:
import org.apache.poi.ss.usermodel.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class ExcelReader {
public static void main(String[] args) {
try {
File file = new File("example.xlsx");
FileInputStream fis = new FileInputStream(file);
Workbook workbook = WorkbookFactory.create(fis);
// 读取第一个工作表
Sheet sheet = workbook.getSheetAt(0);
// 遍历工作表中的每一行
for (Row row : sheet) {
// 读取每一行中的每一列
for (Cell cell : row) {
// 根据单元格类型读取数据
switch (cell.getCellType()) {
case STRING:
System.out.print(cell.getStringCellValue() + "\t");
break;
case NUMERIC:
System.out.print(cell.getNumericCellValue() + "\t");
break;
case BOOLEAN:
System.out.print(cell.getBooleanCellValue() + "\t");
break;
default:
System.out.print("\t");
}
}
System.out.println();
}
workbook.close();
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
上述代码首先创建了一个File
对象,表示要读取的Excel文件。然后,使用FileInputStream
读取文件内容。接下来,使用WorkbookFactory
加载工作簿,并通过getSheetAt()
方法获取第一个工作表。然后,通过遍历工作表的行和列,我们可以读取单元格中的数据,并根据单元格类型进行处理。
在上述示例中,我们使用了switch
语句根据单元格类型打印数据。对于字符串类型的单元格,我们使用getStringCellValue()
方法;对于数字类型的单元格,我们使用getNumericCellValue()
方法;对于布尔类型的单元格,我们使用getBooleanCellValue()
方法。
序列图
下面是读取Excel数据的序列图,使用Mermaid语法绘制:
sequenceDiagram
participant User
participant Program
participant Excel
User->>Program: 启动程序
Program->>Excel: 加载Excel文件
Excel-->>Program: 返回工作簿
Program->>Excel: 获取工作表
Excel-->>Program: 返回工作表
Program->>Excel: 遍历行和列
Excel-->>Program: 返回单元格数据
Program->>User: 打印数据
Program->>Excel: 关闭工作簿
Excel-->>Program: 关闭成功
Program->>Excel: 关闭文件流
Excel-->>Program: 文件流关闭成功
Program->>User: 程序结束
上述序列图展示了用户启动程序后,程序加载Excel文件并获取工作表。然后,程序遍