@Slf4j
public class test {
public List<Employee> employeeList;
private final String fileName1="C:\\Users\\YiFan\\Desktop\\test1.xlsx";
@Test
public void testSimpleWrite() {
log.info("路径: {}",fileName1);
log.info("写入数据开始");
EasyExcel.write(fileName1, Employee.class).sheet("模板").doWrite(SimpleWrite.data(200));
log.info("写入数据结束");
}
@Test
public void testSimpleRead() {
log.info("路径: {}",fileName1);
log.info("读数据开始");
EasyExcel.read(fileName1, Employee.class,new PageReadListener<Employee>(list -> employeeList=list)).sheet("模板").doRead();
log.info("读数据结束");
log.info("employeeList:{},size:{}",employeeList,employeeList.size());
}
}
如代码所示,先写入两百行数据,此时打开 excel 是可以看到两百行数据的。但读取的时候只有一百行数据。如果初始化 employeeList ,往里面添加数据。则正常显示 200 行。所以请问是不是每次读取 100 行,所以后面的会覆盖掉前面的?
1
wuyiccc 2023-10-30 23:35:58 +08:00
没错,PageReadListener 里面的 invoke 默认 BATCH_COUNT 是 100 , 会循环调用 invoke ,所以应该是 employeeList.addAll
|
2
wuyiccc 2023-10-30 23:38:13 +08:00
invoke 里面 cachedDataList>=100 之后,才会调用 list -> employeeList=list
|
3
antipro 2023-10-31 06:13:12 +08:00 via Android
接口的名称已经表示这是分页读取的,这么设计肯定有道理,万一文件里有 100 万行,也一次性给 100 万?
|
4
whoami9426 2023-11-03 17:04:04 +08:00
文档其实写的很仔细了 不是人家的坑
|