Java 使用 POI 库将 Excel 不同 Sheet 读取为不同类
可以使用 POI 库来实现将不同 sheet 读取为不同的类。
- 首先,在 pom.xml 文件中添加 POI 依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
- 然后,创建一个 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;
}
}
- 接下来,定义一个类来存储 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;
}
}
- 最后,调用 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 读取为不同的类了。
原文地址: https://www.cveoy.top/t/topic/oobN 著作权归作者所有。请勿转载和采集!