async-excel实现多sheet异步导出方法详解
作者:起风哥
这篇文章主要介绍了async-excel实现多sheet异步导出方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
业务上如果需要单sheet导出,有时有需要将多个单sheet导出合并到一个excel里面此时,代码写起来也是颇为蛋碎,但是在async-excel中,你可以不改变原有任何逻辑,只需要在增加一个简单的controller方法即可
具体代码如下:
@RequestMapping("/exports") public Long exports() { DataExportParam<Oplog> param = new DataExportParam<>(); param.setExportFileName("导出测试"); param.setLimit(2); //多个sheet导出时,行数计算为所有sheet的总行数,顺序为传入数据组的顺序 Long taskId = excelService .doExport(param, OplogExportHandle.class, OplogExportHandleA.class); return taskId; }
不同参数如何处理?
DataExportParam 内部携带了个map,你可以自由传参,在不同的handler中可以按需获取
sheet1
@ExcelHandle public class OplogExportHandle implements ExportHandler<OplogExportModel> { @Autowired IOplogService oplogService; @Override public void init(ExcelContext context, DataParam param) { ExportContext ctx = (ExportContext) context; //此处的sheetNo会被覆盖,为了兼容多sheet WriteSheet sheet = EasyExcel.writerSheet(0, "第一个sheet").head(OplogExportModel.class).build(); ctx.setWriteSheet(sheet); } @Override public void beforePerPage(ExportContext ctx, DataExportParam param) { //每页开始处理前 } @Override public ExportPage<OplogExportModel> exportData(int startPage, int limit, DataExportParam param) { //你的业务逻辑 return result; } }
sheet2
@ExcelHandle public class OplogExportHandleA implements ExportHandler<OplogExportModel> { @Autowired IOplogService oplogService; @Override public void init(ExcelContext context, DataParam param) { ExportContext ctx = (ExportContext) context; //此处的sheetNo会被覆盖,为了兼容一个文件多sheet导出 WriteSheet sheet = EasyExcel.writerSheet(0, "第二个sheet").head(OplogExportModel.class).build(); ctx.setWriteSheet(sheet); } @Override public ExportPage<OplogExportModel> exportData(int startPage, int limit, DataExportParam param) { //你的业务逻辑 return result; } }
效果如下
到此这篇关于async-excel实现多sheet异步导出方法详解的文章就介绍到这了,更多相关async-excel多sheet异步导出内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!