详细说明Apache POI 库读取 Excel 表格数据
时间: 2024-05-12 11:14:51 浏览: 119
Apache POI 是一个用于读写 Microsoft Office 格式文件(如 Excel、Word、PowerPoint 等)的 Java 库。下面是使用 Apache POI 读取 Excel 表格数据的步骤:
1. 添加 Apache POI 依赖包。
在项目的 pom.xml 文件中添加以下依赖:
```xml
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
```
2. 创建 Workbook 对象。
使用 FileInputStream 类加载 Excel 文件,然后创建 Workbook 对象。Workbook 对象可以是 HSSFWorkbook(处理 .xls 格式)或 XSSFWorkbook(处理 .xlsx 格式)。
```java
FileInputStream file = new FileInputStream(new File("path/to/excel/file.xlsx"));
XSSFWorkbook workbook = new XSSFWorkbook(file);
```
3. 获取 Sheet 对象。
Sheet 对象代表一个 Excel 表格,可以通过 Workbook 对象的 getSheet() 方法获取。也可以通过 Sheet 对象的名字获取,如 getSheet("Sheet1")。
```java
Sheet sheet = workbook.getSheetAt(0); // 获取第一个表格
```
4. 遍历行和单元格。
遍历行和单元格,读取数据。
```java
Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
Iterator<Cell> cellIterator = row.iterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
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.println();
}
```
完整代码示例:
```java
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Iterator;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ReadExcel {
public static void main(String[] args) throws IOException {
FileInputStream file = new FileInputStream(new File("path/to/excel/file.xlsx"));
XSSFWorkbook workbook = new XSSFWorkbook(file);
Sheet sheet = workbook.getSheetAt(0);
Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
Iterator<Cell> cellIterator = row.iterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
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.println();
}
workbook.close();
file.close();
}
}
```
阅读全文