async-excel实现多sheet异步导出方法详解
短信预约 -IT技能 免费直播动态提醒
【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异步导出内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341