easyexcel读取文件多个模板
时间: 2023-11-08 16:58:58 浏览: 90
EasyExcel可以通过创建多个读取器对象来实现读取多个模板文件,每个读取器对象对应一个模板文件。具体实现步骤如下:
1. 引入EasyExcel依赖包
```xml
<!-- EasyExcel依赖包 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.3.0</version>
</dependency>
```
2. 创建多个读取器对象
```java
// 创建读取器对象1,读取模板文件1
ExcelReader excelReader1 = EasyExcel.read(new FileInputStream("模板文件1.xlsx"), 数据类1.class, new 数据读取器1()).build();
// 创建读取器对象2,读取模板文件2
ExcelReader excelReader2 = EasyExcel.read(new FileInputStream("模板文件2.xlsx"), 数据类2.class, new 数据读取器2()).build();
```
3. 启动读取器对象
```java
// 启动读取器对象1
excelReader1.read();
// 启动读取器对象2
excelReader2.read();
```
完整示例代码如下:
```java
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.read.metadata.ReadSheet;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class 多个模板读取器 {
public static void main(String[] args) throws FileNotFoundException {
// 创建读取器对象1,读取模板文件1
ExcelReader excelReader1 = EasyExcel.read(new FileInputStream("模板文件1.xlsx"), 数据类1.class, new 数据读取器1()).build();
// 创建读取器对象2,读取模板文件2
ExcelReader excelReader2 = EasyExcel.read(new FileInputStream("模板文件2.xlsx"), 数据类2.class, new 数据读取器2()).build();
// 启动读取器对象1
excelReader1.read();
// 启动读取器对象2
excelReader2.read();
}
// 定义数据类1
public static class 数据类1 {
private String 字段1;
private String 字段2;
public String get字段1() {
return 字段1;
}
public void set字段1(String 字段1) {
this.字段1 = 字段1;
}
public String get字段2() {
return 字段2;
}
public void set字段2(String 字段2) {
this.字段2 = 字段2;
}
}
// 定义数据读取器1
public static class 数据读取器1 extends MyReadListener<数据类1> {
@Override
public void onSheet(int sheetNo, ReadSheet readSheet) {
System.out.println("开始读取模板文件1的第" + (sheetNo + 1) + "个工作表:" + readSheet.getSheetName());
}
@Override
public void onReadRowData(int sheetNo, int rowIndex, 数据类1 rowData) {
System.out.println("读取模板文件1的第" + (sheetNo + 1) + "个工作表的第" + (rowIndex + 1) + "行数据:" + rowData);
}
}
// 定义数据类2
public static class 数据类2 {
private String 字段1;
private String 字段2;
private String 字段3;
public String get字段1() {
return 字段1;
}
public void set字段1(String 字段1) {
this.字段1 = 字段1;
}
public String get字段2() {
return 字段2;
}
public void set字段2(String 字段2) {
this.字段2 = 字段2;
}
public String get字段3() {
return 字段3;
}
public void set字段3(String 字段3) {
this.字段3 = 字段3;
}
}
// 定义数据读取器2
public static class 数据读取器2 extends MyReadListener<数据类2> {
@Override
public void onSheet(int sheetNo, ReadSheet readSheet) {
System.out.println("开始读取模板文件2的第" + (sheetNo + 1) + "个工作表:" + readSheet.getSheetName());
}
@Override
public void onReadRowData(int sheetNo, int rowIndex, 数据类2 rowData) {
System.out.println("读取模板文件2的第" + (sheetNo + 1) + "个工作表的第" + (rowIndex + 1) + "行数据:" + rowData);
}
}
// 定义数据读取监听器
public static abstract class MyReadListener<T> extends MyReadSimpleListener<T> {
@Override
public void onSheetFinish(int sheetNo) {
System.out.println("模板文件的第" + (sheetNo + 1) + "个工作表读取完毕。");
}
}
// 定义简单数据读取监听器
public static abstract class MyReadSimpleListener<T> extends com.alibaba.excel.read.listener.ReadListenerAdapter<T> {
@Override
public void onException(Exception exception) {
System.err.println("读取数据发生异常:" + exception.getMessage());
}
}
}
```
阅读全文