https://km.sankuai.com/page/1344566103
.
其
它
读
..
读
取
e
x
cel
中
第
⼆
个
s
hee
t
并
且
⼀个
⽂
件
e
x
cel
⽂
件
对
应
⼀个
r
eade
r
..
读
取
E
x
cel
⽂
件中
全
部
s
hee
t
⼀
般
不
这
样
写
,
因
为
不
同
的
s
hee
t
对
应
的
表
头
列
名
不⼀
样
,
所
以
对
应
的
类
以
及
类
的
属
性
也
不⼀
样
建
议
,
分
为
多
个
s
hee
t
读
..
读
取
E
x
cel
⽂
件中
多
个
s
hee
t
@Test
public void indexOrNameRead() {
// // 01.excel
⽂
件
资
源
的
路
径
,
resource/excel
下
的
demo.xlsx
⽂
件
String fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx";
//
然
后
读
取
excel
⽂
件中
第
⼀个
sheet
即
sheet1
;⼀个
⽂
件
⼀个
reader
try (ExcelReader excelReader = EasyExcel.read(fileName, IndexOrNameData.class, new
IndexOrNameDataListener()).build()) {
ReadSheet readSheet = EasyExcel.readSheet(1).build();
excelReader.read(readSheet);
}
}
@Test
public void repeatedRead() {
String fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx";
//
这
⾥
需
要
注
意
IndexOrNameDataListener
的
doAfterAllAnalysed
会
在
每
个
sheet
读
取
完
毕
后
调
⽤
⼀
次
。
然
后
所
有
she
同
⼀个
IndexOrNameDataListener
⾥
⾯
写
//
即
监
听
器
中
,
全
部
数据
处
理
完
成
的
回
调
⽅
法
,
会
被
sheet1
触
发
⼀
次
,
被
sheet
触
发
⼀
次
EasyExcel.read(fileName, IndexOrNameData.class, new IndexOrNameDataListener()).doReadAll();
}
@Test
public void repeatedRead() {
String fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx";
try (ExcelReader excelReader = EasyExcel.read(fileName).build()) {
//
不
同
head
,不
同
的
Listener
//
⼀个
⽂
件
⼀个
reader
ReadSheet readSheet1 =
EasyExcel.readSheet(0).head(DemoData.class).registerReadListener(new
DemoDataListener()).build();
ReadSheet readSheet2 =
EasyExcel.readSheet(1).head(IndexOrNameData.class).registerReadListener(new
IndexOrNameDataListener()).build();
excelReader.read(readSheet1, readSheet2);
}