EasyExcel将数据库里面的数据生成excel文件

EasyExcel官方文档


1.在model模块导入依赖

<!--        生成报表-->
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>easyexcel</artifactId>
  <version>4.0.3</version>
</dependency>

2.修饰实体类

package com.gmgx.vo;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

@Data
public class ExcelVo {

    @ExcelProperty({"订单报表", "订单id"})
    private String id;

    /**
     * 订单状态 1待付款,2待派送,3待取餐,4已派送,5已完成,6已取消,7待审批
     */
    @ExcelProperty({"订单报表", "订单状态"})
    private String status;

    @ExcelProperty({"订单报表", "下单用户id"})
    private String memberId;

    //TODO:根据memberId获取下单用户的名字
    //    @ExcelProperty("下单用户")
    //    private String memberName;

    @ExcelProperty({"订单报表", "店铺id"})
    private String shopId;

    //TODO:根据shopId获取店铺的名字
    //    @ExcelProperty("店铺名")
    //    private String shopName;

    @ExcelProperty({"订单报表", "下单时间"})
    private Date orderTime;

    @ExcelProperty({"订单报表", "结账时间"})
    private Date checkoutTime;

    /**
     * 支付方式 1微信,2支付宝
     */
    @ExcelProperty({"订单报表", "支付方式"})
    private String payMethod;

    @ExcelProperty({"订单报表", "实收金额"})
    private BigDecimal amount;

    @ExcelProperty({"订单报表", "备注"})
    private String remark;

    @ExcelProperty({"订单报表", "收件人手机号"})
    private String phone;

    @ExcelProperty({"订单报表", "收件地址"})
    private String address;

    @ExcelProperty({"订单报表", "收货人姓名"})
    private String consignee;

    /**
     * 0-外卖 1-堂食
     */
    @ExcelProperty({"订单报表", "就餐方式"})
    private String type;

    @ExcelProperty({"订单报表", "取消下单原因(用户端)"})
    private String cancelReasonMember;

    @ExcelProperty({"订单报表", "取消下单原因(管理端)"})
    private String cancelReason;

    @ExcelProperty({"订单报表", "商家拒单原因"})
    private String rejectionReason;

    @ExcelProperty({"订单报表", "商家拒绝用户取消订单的原因"})
    private String rejectCancelReason;
}

3.写业务代码

@Override
public Boolean exportExcel() {
    List<Orders> orderList = this.list();
    String fileName = "baoder-订单报表-" + sdf4Excel.format(System.currentTimeMillis()) + ".xlsx";
    ArrayList<ExcelVo> excelVo = new ArrayList<>();
    for (Orders order : orderList) {
        ExcelVo excelItem = new ExcelVo();
        excelItem.setId(order.getId());
        switch (order.getStatus()) {
            case 1:
                excelItem.setStatus("待付款");
                break;
            case 2:
                excelItem.setStatus("待派送");
                break;
            case 3:
                excelItem.setStatus("待取餐");
                break;
            case 4:
                excelItem.setStatus("已派送");
                break;
            case 5:
                excelItem.setStatus("已完成");
                break;
            case 6:
                excelItem.setStatus("已取消");
                break;
            case 7:
                excelItem.setStatus("待审批");
                break;
        }
        excelItem.setMemberId(order.getMemberId());
        excelItem.setShopId(order.getShopId());
        excelItem.setOrderTime(order.getOrderTime());
        excelItem.setCheckoutTime(order.getCheckoutTime());
        excelItem.setPayMethod(1 == (order.getPayMethod()) ? "微信" : "支付宝");
        excelItem.setAmount(order.getAmount());
        excelItem.setRemark(order.getRemark());
        excelItem.setPhone(order.getPhone());
        excelItem.setAddress(order.getAddress());
        excelItem.setConsignee(order.getConsignee());
        excelItem.setType("0".equals(order.getType()) ? "外卖" : "堂食");
        excelItem.setCancelReasonMember(order.getCancelReasonMember());
        excelItem.setCancelReason(order.getCancelReason());
        excelItem.setRejectionReason(order.getRejectionReason());
        excelItem.setRejectCancelReason(order.getRejectCancelReason());
        excelVo.add(excelItem);
    }
    // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
    // 如果这里想使用03 则 传入excelType参数即可
    EasyExcel.write(fileName, ExcelVo.class).sheet("模板").doWrite(excelVo);
    return true;
}

*******************************************************************

访问接口

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/884009.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【JAVA报错已解决】 Java.lang.ArrayIndexOutOfBoundsException

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

养猫久了才发现,宠物空气净化器才是真正除猫毛的神器

相信每个打工人都在期待这个国庆小长假吧&#xff0c;终于等到了&#xff01;这次我要把属于我的都夺回来&#xff01;刚好工资到手、小长假我有&#xff0c;只想往家里一躺什么也不想&#xff0c;唯一最想做的就是要在这个节假日里好好的陪一下我家猫咪&#xff0c;还有就是买…

数据结构:链表算法题

目录 题1.删除链表中的某个元素val题目表述&#xff1a;思路1:在源链表中进行删除更改思路2:创建一个新链表 题2:反转一个链表问题描述&#xff1a;思路1:在源链表内部进行操作思路2:创建一个新链表 题3:寻找链表中间位置题目描述:思路1:思路2:快慢指针 题1.删除链表中的某个元…

QT 获取视频帧Opencv获取清晰度

先展示结果&#xff1a; 1.获取摄像头的分辨率 mResSize.clear();mResSize camera_->supportedViewfinderResolutions();ui->comboBox_resulation->clear();int i0;foreach (QSize msize, mResSize) {qDebug()<<msize;ui->comboBox_resulation->addItem(…

【CSS|第2期】探索HTML与CSS中的文档流:从自然流到高级布局技巧

日期&#xff1a;2024年9月9日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉在这里插入代码片得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对…

深度学习(三)——Springer特刊推荐

特刊征稿 01 期刊名称&#xff1a; MOBILE NETWORKS & APPLICATIONS 特刊名称&#xff1a;Resource Efficient Deep Learning for Computer Vision Applications 截止时间&#xff1a; 开放提交&#xff1a;2023年12月13日 提交截止日期&#xff1a;2024年10月30日 目标…

CANopen开源库canfestival的移植

本文记录将CANopen开源库CANfestival移植到GD32F470单片机的过程。CANopen协议理解请参考博客&#xff1a;CANopen协议的理解-CSDN博客 CANfestival开源库下载链接 CSDN链接&#xff1a; https://download.csdn.net/download/heqiunong/89774627 官网链接&#xff1a;https:/…

无人便利店无人超市云值守收银系统源码

随着人力成本越来越高&#xff0c;很多门店越来想做无人值守模式&#xff0c;尤其是晚上休息时间等想让云值守客服来看店。自然要求收银系统需要可以在【有收银员值守】和【无收银员值守】两种模式灵活切换。 1. 有收银员值守模式 白天有收银员在店&#xff0c;收银员可以协助…

OJ在线评测系统 代码沙箱优化模版方法模式 使用与有规范的流程 并且执行流程可以复用

代码沙箱优化模版方法模式 上次我们代码沙箱的docker实现和原生实现 我们可以使用模版方法设计模式去优化我们的代码 我们原生的java实现代码沙箱和docker实现代码沙箱是有更多重复点的 比如说把文件 收集文件 进行校验 我们要用模版方法设计模式 定义一套通用的执行流程 让…

MySQL 之索引详解

想象一下&#xff0c;你正在图书馆寻找一本关于 MySQL 索引的书。图书馆里有成千上万本书&#xff0c;但没有目录。你只能一排一排、一本一本地找&#xff0c;直到找到你想要的书。这将会花费大量的时间&#xff01;数据库索引就像图书馆的目录一样&#xff0c;可以帮助数据库系…

raylib实现生产者消费者模型增加缓冲提高帧率

原来增加了四叉树导致帧率下降 后来学了生产者消费者模型&#xff0c;尝试追加缓冲池&#xff0c;剥离主函数查找需要更新的数据 帧率上升稳定到60帧 多了10 帧 中间工程主要是探索数据结构体怎么安排 // 参考自 https://zhuanlan.zhihu.com/p/693482704 #include <stdio.…

Linux之我不会

一、常用命令 1.系统管理 1.1 systemctl start | stop | restart | status 服务名 案例实操 1 查看防火墙状态 systemctl status firewalld2 停止防火墙服务 systemctl stop firewalld3 启动防火墙服务 systemctl start firewalld4 重启防火墙服务 systemctl restart f…

Type-C接口相关知识:【总结大全】

Type-c现在非常通用了&#xff0c;所以了解Type-c也变得十分有必要了&#xff0c;还是秉承了解就要了解清楚的原则&#xff0c;我们深入的看看Type-c接口。 Type-c主要是取代上一代Micro usb接口&#xff0c;那么Type-c有什么优点呢&#xff1f; 正反可插&#xff0c;使用时不…

OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【LMS调测】

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ 持续更新中…… 基本概念 LMS全称为Lite Memory Sanitizer&#xff0c;是一种实时…

Xcode报错:The request was denied by service delegate (SBMainWorkspace)

Xcode报错&#xff1a;The request was denied by service delegate (SBMainWorkspace) 造成的原因: &#xff08;1&#xff09;新的M2芯片的Mac电脑 (2) 此电脑首次安装启动Xcode的应用程序 (3&#xff09;此电脑未安装Rosetta 解决方法: &#xff08;1&#xff09;打开终端…

传奇GEE引擎版本如何封挂?GEE引擎设置简单的封挂脚本教程

网关参数设置gee引擎封挂脚本 1、打开M2-选项-参数设置-游戏速度 把所有的设置限速关闭 2、打开M2-选项-客户端设置-内挂控制-速度控制&#xff1a;移动速度 攻击速度 魔法速度 设置好参数&#xff0c;一旦设置不要修改 否则封挂网关参数需重新设置 打开M2-选项-功能设置-…

计算机毕业设计 基于Flask+Vue的博客系统 Python毕业设计 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

二、kafka生产与消费全流程

一、使用java代码生产、消费消息 1、生产者 package com.allwe.client.simple;import lombok.extern.slf4j.Slf4j; import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.ProducerConfig; import org.apache.kafka.clients.pr…

单通道串口服务器

型号&#xff1a; SG-TCP232-110 功能简介 SG-TCP232-110 是一款用来进行串口数据和网口数据转换的设备。解决普通串口设备在 Internet 上的联网问题。 设备的串口部分提供一个 232 接口和一个 485 接口&#xff0c;两个接口内部连接&#xff0c;同时只能使用一个口工作。 设备…

CVE-2024-46103

前言 CVE-2024-46103 SEMCMS的sql漏洞。 漏洞简介 SEMCMS v4.8中&#xff0c;SEMCMS_Images.php的search参数&#xff0c;以及SEMCMS_Products.php的search参数&#xff0c;存在sql注入漏洞。 &#xff08;这个之前就有两个sql的cve&#xff0c;这次属于是捡漏了&#x1f6…