使用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:导出结果,数据就不展示了

本博客只供大家学习交流,禁止使用在其他用途。对于使用在其他用途的自行承担责任与本博客无关,最终解释权归本人所有

经验分享 程序员 微信小程序 职场和发展