【async-excel组件开源地址】
业务上如果需要单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异步导出内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!