可以使用 POI 库来实现将不同 sheet 读取为不同的类。

  1. 首先,在 pom.xml 文件中添加 POI 依赖:
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.2</version>
</dependency>
  1. 然后,创建一个 ExcelReader 类,用于读取 Excel 文件:
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

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.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

public class ExcelReader {
    public static <T> List<T> readExcel(String filePath, int sheetIndex, Class<T> clazz) throws IOException {
        FileInputStream file = new FileInputStream(filePath);
        Workbook workbook = WorkbookFactory.create(file);
        Sheet sheet = workbook.getSheetAt(sheetIndex);

        List<T> list = new ArrayList<>();

        for (Row row : sheet) {
            T obj = null;
            try {
                obj = clazz.newInstance();
            } catch (InstantiationException | IllegalAccessException e) {
                e.printStackTrace();
            }

            for (Cell cell : row) {
                String fieldName = cell.getStringCellValue();
                cell = cellIterator.next();
                String fieldValue = cell.getStringCellValue();

                try {
                    Field field = clazz.getDeclaredField(fieldName);
                    field.setAccessible(true);
                    field.set(obj, fieldValue);
                } catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
                    e.printStackTrace();
                }
            }

            list.add(obj);
        }

        workbook.close();
        file.close();

        return list;
    }
}
  1. 接下来,定义一个类来存储 Excel 中每个 sheet 的数据,假设这个类叫做 SheetData:
public class SheetData {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
  1. 最后,调用 ExcelReader 的 readExcel 方法来读取 Excel 文件,并将每个 sheet 的数据存储为 SheetData 对象:
public class Main {
    public static void main(String[] args) throws IOException {
        List<SheetData> sheet1Data = ExcelReader.readExcel('example.xlsx', 0, SheetData.class);
        List<SheetData> sheet2Data = ExcelReader.readExcel('example.xlsx', 1, SheetData.class);

        // do something with sheet1Data and sheet2Data
    }
}

这样,就可以将不同的 sheet 读取为不同的类了。

Java 使用 POI 库将 Excel 不同 Sheet 读取为不同类

原文地址: https://www.cveoy.top/t/topic/oobN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录