如何把获取到的数据导出成 Excel 表格格式,通过 EasyExcel 实现数据导出Excel文件

首先需要把获取到的数据转化成List格式

然后通过创建ExcelWriter对象把List格式的数据写进去

最后设置文件格式后直接导出

java 复制代码
@Override
    public void dataSourceDownload(String progressId, HttpServletResponse response) {
        //从内存中获取数据,可换成读取数据库拿数据
        Element element = cache.get(progressId);

        Map objectValue = (Map) element.getObjectValue();
        List<DataAnalyseDto> exportList = (List<DataAnalyseDto>) objectValue.get("alreadyData");

        // 创建ExcelWriter对象
        ExcelWriter excelWriter = EasyExcel.write("DataAnalyse.xlsx", DataAnalyseDto.class).build();

        // 创建WriteSheet对象
        WriteSheet writeSheet = EasyExcel.writerSheet("分析数据").build();

        // 将数据写入Excel
        excelWriter.write(exportList, writeSheet);

        // 关闭ExcelWriter对象
        excelWriter.finish();

        // 设置为导出件格式为excel
//        response.setContentType("application/vnd.ms-excel");
//        response.setCharacterEncoding("utf-8");
        String filePrefix = "分析数据文件";
        try {
            // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
            String fileName = URLEncoder.encode(filePrefix, "UTF-8").replaceAll("\\+", "%20");
            //Content-disposition 的 attachment参数将文件作为附件下载
            response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
            EasyExcel.write(response.getOutputStream(), DataAnalyseDto.class).sheet("模板").doWrite(exportList);
        } catch (Exception e) {
            log.error("下载文件失败!", e.getMessage());
        } finally {
            cache.remove(progressId);
        }
        log.info("下载数据大小为:{}", exportList.size());
    }
相关推荐
Flynt4 小时前
Java 27 升级实测:默认值动得比新特性多,有个老参数会让 JVM 直接起不来
java·jvm·后端
Bs_MoneyMagnet4 小时前
基于springboot+vue的个人健康管理系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·vue3·springboot3·计算机毕业设计
星云API技术支持5 小时前
企业微信二次开发:群权限设置、成员管理与群资料维护的接口组合实践
java·前端·企业微信
niucloud-admin5 小时前
JAVA V6 多商户商城 开发文档——job 计划任务开发
java·python·github
海宇AI6 小时前
零信任架构实战:基于海宇柠檬查出险-登记证构建自动化车抵贷核保网关
java·人工智能·架构·自动化
cfm_29148 小时前
单例模式详解
java
我叫张土豆8 小时前
本体论、DDD、SDD、TDD:AI 编程时代的四层认知栈
java·人工智能
白远山8 小时前
家政服务家政社区派单实战:调度系统架构设计与实现指南
java·开发语言·小程序·架构·需求分析
海南java第二人8 小时前
从诞生到回收:JVM对象生命周期与垃圾回收全链路解析
java
SL_staff9 小时前
JVS-Logic:从页面配置工具到企业级业务逻辑中枢的技术演进
java·算法·全栈