Java获取Excel根据No Sheet

引言

在Java开发过程中,我们经常需要处理Excel文件。Excel是一种常用的办公软件,它可以用于存储和管理大量的数据。有时候,我们需要根据Excel中的Sheet名称来获取特定的Sheet数据。本文将介绍如何使用Java获取Excel文件中的Sheet数据,以及如何根据Sheet名称进行筛选。

准备工作

在开始之前,我们需要准备以下内容:

  1. JDK安装:确保已经安装了JDK,并且配置了环境变量。
  2. Apache POI库:Apache POI是一个用于处理Microsoft Office格式文件的Java库。我们需要下载并导入Apache POI的jar文件。

导入所需类库

首先,我们需要导入Apache POI库的相关类库。在这个例子中,我们使用的是Apache POI的最新版本(4.1.2)。你可以在[Apache POI官方网站](

导入所需的类库可以通过Maven或手动将jar文件导入项目中实现。这里我们将手动导入jar文件。

以下是所需的类库:

poi-4.1.2.jar
poi-ooxml-4.1.2.jar
poi-ooxml-schemas-4.1.2.jar

创建Excel文件

首先,我们需要创建一个Excel文件,以便后续的示例使用。我们将创建一个包含两个Sheet的Excel文件,每个Sheet包含一些示例数据。

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;
import java.io.IOException;

public class CreateExcelFile {
    public static void main(String[] args) {
        Workbook workbook = new XSSFWorkbook();
        
        // 创建第一个Sheet
        Sheet sheet1 = workbook.createSheet("Sheet1");
        Row row = sheet1.createRow(0);
        Cell cell = row.createCell(0);
        cell.setCellValue("Hello");
        
        // 创建第二个Sheet
        Sheet sheet2 = workbook.createSheet("Sheet2");
        row = sheet2.createRow(0);
        cell = row.createCell(0);
        cell.setCellValue("World");
        
        // 保存Excel文件
        try (FileOutputStream outputStream = new FileOutputStream("example.xlsx")) {
            workbook.write(outputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上述代码创建了一个包含两个Sheet的Excel文件,第一个Sheet的单元格A1的值为"Hello",第二个Sheet的单元格A1的值为"World"。Excel文件将保存为example.xlsx

获取Excel中所有Sheet的名称

下面的示例演示了如何获取Excel文件中所有Sheet的名称。

import org.apache.poi.ss.usermodel.*;

import java.io.FileInputStream;
import java.io.IOException;

public class GetSheetNames {
    public static void main(String[] args) {
        try (FileInputStream inputStream = new FileInputStream("example.xlsx")) {
            Workbook workbook = WorkbookFactory.create(inputStream);
            
            // 获取所有Sheet的名称
            for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
                String sheetName = workbook.getSheetName(i);
                System.out.println(sheetName);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上述代码打开了刚刚创建的Excel文件,并使用getSheetName(int index)方法获取每个Sheet的名称。然后,我们打印出了所有Sheet的名称。

根据Sheet名称获取Sheet数据

下面的示例演示了如何根据Sheet名称获取Excel文件中特定Sheet的数据。

import org.apache.poi.ss.usermodel.*;

import java.io.FileInputStream;
import java.io.IOException;

public class GetSheetDataByName {
    public static void main(String[] args) {
        try (FileInputStream inputStream = new FileInputStream("example.xlsx")) {
            Workbook workbook = WorkbookFactory.create(inputStream);
            
            // 根据Sheet名称获取Sheet对象
            Sheet sheet = workbook.getSheet("Sheet1");
            
            // 遍历Sheet中的每一行和每一列
            for (Row row : sheet) {
                for (Cell cell : row) {
                    String cellValue = "";
                    switch (cell.getCellType()) {
                        case STRING:
                            cellValue = cell.getStringCellValue();
                            break;
                        case NUMERIC:
                            cellValue = String.valueOf(cell.getNumericCellValue());
                            break;
                        case BOOLEAN:
                            cellValue = String.valueOf(cell.getBooleanCellValue());
                            break;
                        case BLANK:
                            cellValue = "";
                            break;
                    }
                    System.out.print(cellValue +