编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

easyexcel实现指定模板导出(easyexcel导出指定列)

wxchong 2024-08-24 01:52:55 开源技术 10 ℃ 0 评论

一、概述

springboot集成easyexcel实现通用异步导出平台

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));
    }

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表