当前位置: 首页 > 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;
}

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

访问接口

http://www.lryc.cn/news/446779.html

相关文章:

  • 【YOLO学习】YOLOv1详解
  • HarmonyOS应用开发(组件库)--组件模块化开发、工具包、设计模式(持续更新)
  • python测试开发---前后端交互Axios
  • 删除视频最后几帧 剪切视频
  • SSM框架学习(四、SpringMVC实战:构建高效表述层框架)
  • 戴尔笔记本电脑——重装系统
  • 领夹麦克风哪个品牌音质最好,主播一般用什么麦克风
  • 华为静态路由(route-static)
  • Focalboard开源项目管理系统本地Windows部署与远程访问协同办公
  • Java如何操作Elasticsearch
  • cpu路、核、线程、主频、缓存
  • 【AI算法岗面试八股面经【超全整理】——深度学习】
  • STL——map和set【map和set的介绍和使用】【multimap和multiset】
  • 【笔记】神领物流配置本地hosts无法访问域名(排除DNS 排除文件编码问题)已解决
  • Java | Leetcode Java题解之第424题替换后的最长重复字符
  • Xcode 16 Pod init 报错
  • 【数据结构】Java的HashMap 和 HashSet 大全笔记,写算法用到的时候翻一下,百度都省了!(实践篇)
  • Docker 教程:如何查看容器的最后 300 行实时日志
  • Qwen2-VL论文阅读笔记
  • APScheduler、Django实现定时任务,以及任务动态操作
  • SpringBoot开发——整合Apache POI轻松生成精美的Excel报表
  • 海信智能电视的使用心得
  • 【YashanDB知识库】客户端字符集与数据库字符集兼容问题
  • Session和Cookie是什么?有什么区别?分布式Session问题又是什么?
  • 项目实战:Qt+OSG爆破动力学仿真三维引擎测试工具v1.1.0(加载.K模型,子弹轨迹模拟动画,支持windows、linux、国产麒麟系统)
  • CSS开发全攻略
  • OpenCV运动分析和目标跟踪(3)计算图像序列的加权平均值函数accumulateWeighted()的使用
  • vue3中echarts柱状图横轴文字太多放不下怎么解决
  • Web 开发安全与最佳实践:MVC、会话管理与常见攻击防御
  • Segformer双显卡推理速度测试