如何把获取到的数据导出成 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());
    }
相关推荐
东小西11 分钟前
【SAA实战】第 1 篇:ReactAgent 入门——先撸个"会调工具的助手"跑起来
java·人工智能·spring
mqiqe1 小时前
AgentScope Java 2.0 协议集成全景解析:A2A、AG-UI、Agent Protocol 三大开放协议实战指南
java·开发语言·ui
脉动数据行情1 小时前
Java 实现台股 TWSE/TPEx 行情采集(个股 + K 线)
java·开发语言·twse·tpex·台股
月华路3 小时前
G1 GC 对数组与大对象(Humongous)的处理
java·jvm·算法
liangshanbo12154 小时前
虚拟列表深度面试题整理
java·开发语言·前端
gugucoding4 小时前
59. 【Java】Spring Boot 入门:第一个 Web 应用
java·开发语言·spring boot
10mAh5 小时前
【Java】HashMap 的 put 到底做了什么?——冲突、扩容与树化实测
java·开发语言·hash
我命由我123455 小时前
人脸识别 - 勒克斯(光线照射到物体表面上的明亮程度)
android·java·学习·java-ee·人脸识别·学习方法·android runtime
TechLee6 小时前
跨语言加解密总对不上?这个纯 Go 神库让 AES/RSA 与 PHP、Java 100% 互通
java·后端·算法