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

news2024/11/16 18:26:05

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.coloradmin.cn/o/2159912.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Metasploit Pro 4.22.4-2024091601 发布下载,新增功能概览

Metasploit Pro 4.22.4-2024091601 (Linux, Windows) - 专业渗透测试框架 Rapid7 Penetration testing, release Sep 16, 2024 请访问原文链接&#xff1a;https://sysin.org/blog/metasploit-pro-4/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页…

保障电气安全的电气火灾监控系统主要组成有哪些?

电气火灾是什么&#xff1f; 电气火灾一般是指由于电气线路、用电设备、器具以及供配电设备出现故障性释放的热能&#xff1a;如高温、电弧、电火花以及非故障性释放的能量&#xff1b;如电热器具的炽热表面&#xff0c;在具备燃烧条件下引燃本体或其他可燃物而造成的火灾&…

速通汇编(七)BX、SI、DI寄存器,BP寄存器,直接寻址和间接寻址

下文中出现的"idata"&#xff0c;指的都是任意常量 一&#xff0c;基于BX、SI、DI等寄存器的寻址形式 在第五篇中曾介绍过DS寄存器的作用&#xff0c;简要复习一下->速通汇编&#xff08;五&#xff09;认识段地址与偏移地址&#xff0c;CS、IP寄存器和jmp指令&a…

oracle avg、count、max、min、sum、having、any、all、nvl的用法

组函数 having的使用 any的使用 all的使用 nvl 从执行结果来看&#xff0c;nvl(列名&#xff0c;默认值)&#xff0c;nvl的作用就是如果列名所在的这一行出现空则用默认值替换

3.2 USART 通用同步/异步收发器

文章目录 什么是USARTUSART框图 stm32的Usart串口收发配置初始化发送接收 重定向的几种方法串口发送数据包 什么是USART USART&#xff08;Universal Synchronous/Asynchronous Receiver/Transmitter&#xff09;通用同步/异步收发器USART是STM32内部集成的硬件外设&#xff0…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第十集:制作后坐力系统Recoil和小骑士的生命系统和受伤系统

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、制作后坐力系统Recoil 1.使用代码实现扩展新的后坐力行为2.为敌人脚本添加后坐力行为3.为小骑士添加后坐力行为二、制作小骑士的生命系统和受伤系统 1.制作…

Appium独立测试自动化初始化脚本

1、查看环境初始化参数 确保appium已经开起来了&#xff0c;设置ip ,并点击启动 打开夜神模拟器&#xff0c;点击工具--设置 最下面的版本说明&#xff0c;双击进去 版本号这里再去单击。 直到进入到开发者模式。 可能我们不是开发者模式打开的状态&#xff0c;所以软件访问模…

fo-dicom是如何实现DICOM 的网络通信功能

一、前言 前面的文章&#xff0c;我们介绍了fo-dicom是一个怎样的开源库等一些内容&#xff1a; fo-dicom&#xff0c;第一个基于.NET Standard 2.0 开发的DICOM开源库fo-dicom开源库是如何满足 DICOM标准的基本要求fo-dicom开发之DICOM数据解析&#xff1a;常见数据类型及处…

自学前端的正确姿势是...

师傅带进门&#xff0c;修行在个人。 在前端自学成才的道路上&#xff0c;有些人走的很快&#xff0c;有些人却举步维艰。 为什么会这样子呢&#xff1f;因为他们没有掌握自学前端的正确姿势。 在介绍应该要怎样自学前端之前&#xff0c;首先来看下&#xff0c;自学前端容易…

JavaWeb--小白笔记07:servlet对表单数据的简单处理

这里的servlet对表单数据的处理是指使用IDEA创建web工程&#xff0c;再创建html和class文件进行连接&#xff0c;实现html创建一个表单网页&#xff0c;我们对网页中的表单进行填充&#xff0c;可以通过class文件得到网页我们填充的内容进行打印到控制台。 一登录系统页面---h…

[vulnhub] w1r3s.v1.0

https://www.vulnhub.com/entry/w1r3s-101,220/ 思路&#xff1a;红队笔记 主机发现端口扫描 使用nmap扫描网段类存活主机 因为靶机是我最后添加的&#xff0c;所以靶机IP是133 nmap -sP 192.168.75.0/24 // Starting Nmap 7.93 ( https://nmap.org ) at 2024-09-20 09:09 CST…

MySQL 数据库安装(详细教程)

文章目录 一、前言二、下载 MySQL2.1 安装包方式2.2 压缩包方式&#xff08;推荐&#xff09; 三、安装 MySQL3.1 解压 MySQL 文件3.2 配置环境变量3.3 初始化 data 目录3.4 安装 MySQL 服务3.5 开启 MySQL 服务3.6 修改 MySQL 密码 四、卸载 MySQL4.1 停止 MySQL 服务4.2 删除…

MySQL record 08 part

数据库连接池&#xff1a; Java DataBase Connectivity&#xff08;Java语言连接数据库&#xff09; 答&#xff1a; 使用连接池能解决此问题&#xff0c; 连接池&#xff0c;自动分配连接对象&#xff0c;并对闲置的连接进行回收。 常用的数据库连接池&#xff1a; 建立数…

【WRF运行第三期】服务器上运行WRF模型(官网案例-Hurricane Matthew)

【WRF运行第三期】运行WRF模型&#xff08;官网案例-Hurricane Matthew&#xff09; 官网案例-Hurricane Matthew介绍0 创建DATA文件夹1 WPS预处理1.1 解压GRIB数据&#xff08;ungrib.exe&#xff09;1.1.1 解压GRIB数据---GFS&#xff08;Matthew案例研究数据&#xff09;1.1…

Bytebase 2.22.3 - 一键回滚 PostgreSQL DML 变更

&#x1f680; 新功能 支持一键回滚 PostgreSQL DML 变更。 &#x1f384; 改进 优化 DML 事前备份和回滚体验&#xff1a; 引导用户创建 bbdataarchive 数据库。如果没有 bbdataarchive 数据库&#xff0c;无法开启备份功。用户现在可以在创建工单之后开启或关闭备份功能&a…

PyCharm远程连接AutoDL服务器实现程序调试

本文详细介绍了如何在Pycharm中配置SSH和SFTP&#xff0c;以便于在AOTUDL服务器上进行代码修改、调试。步骤包括新建工程、配置SFTP连接、设置Rootpath和Mapping&#xff0c;以及实现自动上传和下载文件的功能。远程服务器编辑调试只是试用于专业版本的pycharm&#xff0c;我的…

【LLM学习之路】9月22日 第九天 自然语言处理

【LLM学习之路】9月22日 第九天 直接看Transformer 第一章 自然语言处理 自然语言处理发展史 只要看的足够多&#xff0c;未必需要理解语言 统计语言模型发展史 统计语言模型&#xff1a; 判断一个句子是否合理&#xff0c;就计算这个句子会出现的概率 缺点是句子越长越…

微软推迟在MDM设备上启用OOBE强制更新 因为IT管理员反馈称缺乏控制

微软很久之前就计划在 Windows 10/11 OOBE 期间强制下载更新&#xff0c;即若检测到系统本身属于旧版本例如并未安装最新累积更新&#xff0c;则在 OOBE 期间强制下载最新累积更新并自动安装。这种更新方式已经在面向消费者的设备上启用&#xff0c;而上周微软则是在适用于企业…

盘点那些功能强大的思维导图在线工具,你用过几个

如果我们日常遇到比较繁杂的信息需要梳理&#xff0c;那我比较推荐使用思维导图在线工具进行梳理。这些工具可以通过图形化的方式展示各种信息之间的关系。这篇文章我将要介绍几款好用的思维导图工具帮我们更好的组织思维。 1.福晰思维导图 链接一下&#xff1a;https://www.…

GPIO与MIO控制LED——ZYNQ学习笔记2

一、GPIO简介 ZYNQ 分为 PS 和 PL 两部分&#xff0c;那么器件的引脚&#xff08; Pin&#xff09;资源同样也分成了两部分。 ZYNQ PS 中的外设可以通过 MIO&#xff08; multiplexed I/O&#xff0c;多路复用 I/O&#xff09;模块连接到 PS 端的引脚上&#xff0c;也可以通过 …