使用easyExcel导出百万级数据
1:测试数据量两百二十多万,Excel2007,一个Excel多个sheet
2:导入maven依赖包
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>1.1.2-beta5</version>
</dependency>
3:实体类添加注解。注意事项:1:必须继承BaseRowModel。2:@ExcelProperty必须写,其中value是要导出到Excel的表头名字自己起,index:代表某一列从0开始排序,由于实体类字段比较多,所以在导出时会自动忽略没有加注解的字段
public class TaskStoreItemDTO extends BaseRowModel{
@ExcelProperty(value = "id",index = 0)
private String id;
@ExcelProperty(value = "replenish_item_store_id",index = 1)
private String replenishItemStoreId;
@ExcelProperty(value = "tab_nbr",index = 2)
private String tabNbr;
}
//查询数据库返回的数据集合
List<TaskStoreItemDTO> exportList = mapper.export(taskId);
//导出开始,生成EXCEL并指定输出路径
OutputStream out=null;
try {
String aa=serviceConfig.getExportFeedbackPath()+"任务信息详情表.xlsx";
out = new FileOutputStream(aa);
ExcelWriter writer = new ExcelWriter(out, ExcelTypeEnum.XLSX);
//测试导出200万数据
//List<TaskStoreItemDTO> exportList = mapper.test();
List<List<TaskStoreItemDTO>> taskStoreItemList = Lists.partition(exportList, 1000000);
//一个sheet一百万调数据,自动分页
for(int i=0;i<taskStoreItemList.size();i++) {
// 设置SHEET
Sheet sheet = new Sheet((i+1), 0,TaskStoreItemDTO.class,"sheet"+(i+1),null);
writer.write(taskStoreItemList.get(i), sheet);
}
writer.finish();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
out.flush();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
5:可以修改的数据
6:导出结果,数据就不展示了
本博客只供大家学习交流,禁止使用在其他用途。对于使用在其他用途的自行承担责任与本博客无关,最终解释权归本人所有
