当前位置: 首页 > news >正文

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

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

访问接口

相关文章:

  • Java 之注解详解
  • VLM系列文章7-Molmo and PixMo
  • 如何优化模型性能,探讨过拟合与欠拟合问题
  • 理论-同步、异步、阻塞、非阻塞
  • tomcat 文件上传 (CVE-2017-12615)
  • 碳性电池和碱性电池的区别
  • Matlab 软件入门
  • Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架。它是 Spring 项目家族的一员,用于构建安全的 Java 应用程序。
  • 并发编程---线程与进程
  • ARM点灯---看手册
  • 几种常见点云开源库——点云、网格数据结构转换
  • Python使用总结之py-docx将word文件中的图片保存,并将内容返回
  • 前端项目依赖包中的依赖包漏洞解决方案
  • Python的包管理工具pip安装
  • 不可思议的转折,这部韩剧在口碑上实现逆袭
  • [iOS]Core Data浅析一 -- 启用Core Data
  • CentOS 7 防火墙操作
  • github从入门到放弃(1)
  • IndexedDB
  • JSDuck 与 AngularJS 融合技巧
  • miaov-React 最佳入门
  • Mocha测试初探
  • windows下使用nginx调试简介
  • 创建一种深思熟虑的文化
  • 番外篇1:在Windows环境下安装JDK
  • 基于遗传算法的优化问题求解
  • 力扣(LeetCode)22
  • 前端设计模式
  • 入门级的git使用指北
  • 设计模式 开闭原则
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 项目实战-Api的解决方案
  • 阿里云移动端播放器高级功能介绍
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​1:1公有云能力整体输出,腾讯云“七剑”下云端
  • ​数据链路层——流量控制可靠传输机制 ​
  • #07【面试问题整理】嵌入式软件工程师
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (26)4.7 字符函数和字符串函数
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (转)用.Net的File控件上传文件的解决方案
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .NET中GET与SET的用法
  • ??myeclipse+tomcat
  • @Bean有哪些属性
  • @DS 多数据源 + @Transactional(rollbackFor = Exception.class) 导致@DS 多数据源没法使用
  • @RequestBody与@RequestParam:Spring MVC中的参数接收差异解析
  • [ NOI 2001 ] 食物链
  • []FET-430SIM508 研究日志 11.3.31