- 前言
- 需求
- 实现
- 写在最后
java大数据量导出excel,谨以此篇博客和大家分享下。
需求需要导出几十万甚至几百万数据到excel。
实现HouseInfoVO.java
@Data
public class HouseInfoVO {
@Excel(name = "id")
private Long id;
@Excel(name = "编码")
private String code;
}
关键代码:
ListhouseInfoVOS = houseInfoService.test(houseInfoQueryDTO); Workbook workbook = ExcelExportUtil.exportBigExcel(new ExportParams(null, "1"), HouseInfoVO.class, houseInfoVOS);
ExportParams两个参数:
第一个:标题行名称(设为null代表没有标题行,有的话会在excel第一行展示)
第二个:sheet名称
调用excel导出浏览器方法
private void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) {
try {
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
response.setHeader("content-Type", "application/vnd.ms-excel");
workbook.write(response.getOutputStream());
} catch (IOException e) {
throw new ServiceException(e.getMessage());
}
}
上面提供了 EasyPoi的exportBigExcel导出大数据量方法,我试过16w数据导出只要10s左右,如果你导出时间过长可能是你查询数据库耗时过长,需要sql优化了,有时间的话可以研究下阿里的EasyExcel。
这里提供另一种思路:如果数据量过大,可以采取分sheet页导出,比如每个sheet导十万导多个sheet页
实现代码:
try {
List
写在最后
非常感谢大家的认真阅读,如果有其他好代码技巧都可以和我交流哦,如有不足,还望各位看官多批评指正=_=
技术交流秋秋群:719023986
微x关注:干饭必备外卖神券,每天领大额卷
微x关注:正好想买,自助查桃宝京d卷



