一、概述
springboot集成easyexcel实现通用异步导出平台
基础代码可参考前面几篇文章,本文介绍下easyexcel如何根据指定模板导出数据(模板事先上传到服务器)
二、实战
异步导出框架代码参考前面的文章,根据指定模板导出excel代码改动不大,此处只给出核心代码:ExportTemplate.exportDataByTemplate:
public void exportDataByTemplate(ExportSo exportSo, String taskId) {
String businessTypeCode = exportSo.getBusinessTypeCode();
TaskDefinition taskDefinition = TaskDefinition.getTaskDefinition(businessTypeCode);
if (null == taskDefinition) {
throw new IllegalArgumentException("导出业务类型编码异常!");
}
String fileName = taskDefinition.getFileName();
String filePath = "D:\\excel\\" + fileName + ".xlsx";
ExportTaskEntity updateExportTaskEntity = new ExportTaskEntity();
updateExportTaskEntity.setTaskId(taskId);
updateExportTaskEntity.setFilePath(filePath);
updateExportTaskEntity.setUpdateTime(new Date());
updateExportTaskEntity.setTaskStatusCode(TaskStatusEnum.SUCCESS.getCode());
updateExportTaskEntity.setTaskStatusName(TaskStatusEnum.SUCCESS.getDesc());
try {
// 按照模板导出:withTemplate方法指定文件URL
String templateUrl = "D:\\excel\\学生信息模板.xlsx";
ExcelWriter excelWriter = EasyExcelFactory.write(filePath).withTemplate(templateUrl).build();
// 执行具体导出业务逻辑(查询DB、ES数据等),写入EXCEL
String exportServiceName = taskDefinition.getExportService();
ExportBaseService exportBaseService = (ExportBaseService) SpringUtils.getBean(exportServiceName);
WriteSheet writeSheet = EasyExcelFactory.writerSheet(fileName).build();
exportBaseService.export(exportSo, excelWriter, writeSheet);
excelWriter.finish();
} catch (Exception e) {
updateExportTaskEntity.setTaskStatusCode(TaskStatusEnum.FAIL.getCode());
updateExportTaskEntity.setTaskStatusName(TaskStatusEnum.FAIL.getDesc());
log.error("导出任务异常 任务ID: {} 导出参数: {} 异常信息: ", taskId, JSON.toJSONString(exportSo), e);
}
// 更新导出任务
exportTaskMapper.updateExportTask(updateExportTaskEntity);
}
withTemplate方法有3个重载方法:InputStream、File、filePathName可供选择
public ExcelWriterBuilder withTemplate(InputStream templateInputStream) {
writeWorkbook.setTemplateInputStream(templateInputStream);
return this;
}
public ExcelWriterBuilder withTemplate(File templateFile) {
writeWorkbook.setTemplateFile(templateFile);
return this;
}
public ExcelWriterBuilder withTemplate(String pathName) {
return withTemplate(new File(pathName));
}
本文暂时没有评论,来添加一个吧(●'◡'●)