EasyExcel 实战:大数据量导入导出与样式处理
文章目录
导出怎么写才稳
大数据导出别一口气把所有数据查出来再写。比较稳的做法是分页查询、分批写入、及时释放临时对象。这样做的好处是内存曲线会平很多。
java
for (int page = 1; ; page++) {
List<UserExportRow> rows = userService.pageQuery(page, 5000);
if (rows.isEmpty()) break;
EasyExcel.write(outputStream, UserExportRow.class)
.sheet("用户数据")
.doWrite(rows);
}
导入怎么处理更像样
导入通常分三步:读取、校验、落库。不要在 invoke() 里做太重的事情,最好先收集,再批量校验,最后批量入库。
样式怎么做
如果只是标题加粗、列宽自适应、表头居中,直接用自定义 WriteHandler 就够了。复杂一点的合并单元格、固定表头、条件样式,也建议拆成单独的 handler。
这几个坑最常见
- 一个表导出时样式和数据耦合太紧
- 导入时一行一条 SQL,性能很差
- 重复数据没先做去重
- 文件大了以后忘了控制下载超时
经验结论
EasyExcel 真正好用的地方,不是"写起来更短",而是它能把导入导出做成一条可控的流水线。