Easy Excel 通过【自定义批注拦截器】实现导出的【批注】功能

目录

  • Easy Excel 通过 【自定义批注拦截器】实现导出的【批注】功能
    • 需求原型:
    • 相关数据:
      • 要导出的对象字段
      • postman 格式
      • 导出对象VO
    • 自定义批注拦截器
      • 业务代码:
    • 拦截器代码解释:
      • 详细解释:
      • 格式优化:

Easy Excel 通过 【自定义批注拦截器】实现导出的【批注】功能

工作中用 Easy Excel 实现导出时,需要把一些数据以【批注】的方式实现。

Easy Excel 官网

需求原型:

要实现这个批注,因为【佣金配置】字段原本是一个对象。
对象是无法导出的,所以现在改成批注的形式来显示。

如图:

在这里插入图片描述

相关数据:

要导出的对象字段

这个是佣金字段对象,里面是三个map类型的字段。

在这里插入图片描述

postman 格式

查出来的数据大概长这样,但是 EasyExcel 不支持导出对象,所以打算把数据以【批注】的形式导出来

在这里插入图片描述

导出对象VO

这是导出数据的接收对象,这里因为无法导出对象类型的字段数据,所以我把数据改成String类型了。

在这里插入图片描述

把类型从【RiderCommissionConfigDto】改成【String】,那么导出来的数据是这样的。

在这里插入图片描述

自定义批注拦截器

业务代码:

如图解释:

1、查出来的导出数据中,【佣金设置】字段的数据类型是【RiderCommissionConfigDto】对象类型

2、在把查出来的【FinanceRiderListDto】数据类型,转成【FinanceRiderListExportVo】这个导出对象类型时,需要把【RiderCommissionConfigDto】对象转成【String】类型,然后设置进VO对象中。

导出时,涉及到【批注拦截器】的代码,用红框画出来了。

在这里插入图片描述

接着继续看代码:

这里在把数据写入到 Excel 中时,每写入一行数据,就会调用一次自定义拦截器

在这里插入图片描述

拦截器代码解释:

context 是 RowWriteHandlerContext 类型的对象,它提供了对当前行的访问。

getRow() 方法返回当前行的 Row 对象,代表当前行在 Excel 中的所有单元格。

getCell(int colIndex) 是 Row 对象的方法,用于获取指定列索引(colIndex)的单元格对象,colIndex 是列的索引,从 0 开始计数。

cell 是 Cell 类型的对象,它代表一个 Excel 单元格。如图:context.getRow().getCell(colIndex) 来获取单元格对象

详细解释:

在这里插入图片描述
在这里插入图片描述

格式优化:

在这里插入图片描述

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

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

相关文章

python VS c++

一、语法特点 Python: 语法简洁、优雅,代码可读性极强,采用缩进来表示代码块,摒弃了像 C 那样使用大括号的传统方式,使得代码看上去十分清晰简洁。例如: ​ if 5 > 3:print("5大于3") elif 5 …

Spring Boot 的 WebClient 实践教程

什么是 WebClient? 在 Spring Boot 中,WebClient 是 Spring WebFlux 提供的一个非阻塞、响应式的 HTTP 客户端,用于与 RESTful 服务或其他 HTTP 服务交互。相比于传统的 RestTemplate,WebClient 更加现代化,具有异步和…

QML学习 —— 29、3种不同使用动画的方式(附源码)

效果 说明 第一种:属性动画 - 当启动软件时候自动执行动画。      第二种:行为动画 - 当属性发生变化则自动执行动画。      第三种:目标动画 - 将动画变为对象,指定对象的目标进行执行动画。 代码 import QtQuick 2.12 import QtQuick.Window 2.12 import QtQu…

Zustand:一个轻量级的React状态管理库

文章目录 前言一、安装Zustand二、使用Zustand三、实际案例结语 前言 在现代Web开发中,状态管理是一个常见的需求,特别是在构建大型或复杂的单页面应用程序(SPA)时。React等框架虽然提供了基本的状态管理功能,但对于复…

Redis缓存穿透及常见的解决方案

一.什么是缓存穿透? 缓存穿透是指当客户端请求的数据在缓存(如 Redis)中不存在,并且在数据库中也不存在时,直接绕过缓存去请求数据库。这种情况会导致: 缓存系统无法发挥作用,数据每次都会直接…

(原创)Android Studio新老界面UI切换及老版本下载地址

前言 这两天下载了一个新版的Android Studio,发现整个界面都发生了很大改动: 新的界面的一些设置可参考一些博客: Android Studio新版UI常用设置 但是对于一些急着开发的小伙伴来说,没有时间去适应,那么怎么办呢&am…

windows下安装wsl的ubuntu,同时配置深度学习环境

写在前面,本次文章只是个人学习记录,不具备教程的作用。个别信息是网上的,我会标注,个人是gpt生成的 安装wsl 直接看这个就行;可以不用备份软件源。 https://blog.csdn.net/weixin_44301630/article/details/1223900…

Node.js的http模块:创建HTTP服务器、客户端示例

新书速览|Vue.jsNode.js全栈开发实战-CSDN博客 《Vue.jsNode.js全栈开发实战(第2版)(Web前端技术丛书)》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com) 要使用http模块,只需要在文件中通过require(http)引入即可。…

AI赋能电商:构建高效、智能化的新零售生态

随着人工智能(AI)技术的不断进步,其在电商领域的应用日益广泛,从购物推荐到供应链管理,再到商品定价,AI正在全面改变传统电商的运营模式,并推动行业向智能化和精细化方向发展。本文将探讨如何利…

算法之区间和题目讲解

题干 难度:简单 题目分析 题目要求算出每个指定区间内元素的总和。 然而,区间在输入的最下面,所以按照暴力破解的思路,我们首先要遍历数组,把它的值都存进去。 然后,遍历下面的区间,从索引a…

多维数组与特殊矩阵:存储与压缩

多维数组与特殊矩阵:存储与压缩 一、多维数组的存储 (一)基本概念 多维数组是线性表的推广,例如二维数组可以看作是元素为一维数组的线性表,三维数组可以看作是元素为二维数组的线性表,以此类推。在内存…

openssl颁发包含主题替代名的证书–SAN

原文地址:openssl颁发包含主题替代名的证书–SAN – 无敌牛 欢迎参观我的个人博客:无敌牛 – 技术/著作/典籍/分享等 在 X.509 证书中,commonName(CN)字段只能有一个值。如果让证书支持多个域名和IP地址,…

从尾到头打印链表 剑指offer

题目描述 输入一个链表的头节点,从尾到头反过来打印出每个节点的值。 链表节点定义如下: struct ListNode {int m_nKey;ListNode*m_pNext; }; 代码实现 栈实现: 递归实现: 但是用递归实现可能存在的问题:

安装 Docker(使用国内源)

一、安装Docker-ce 1、下载阿里云的repo源 [rootlocalhost ~]# yum install yum-utils -y && yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo && yum makecache # 尝试列出 docker-ce 的版本 [rootlocalh…

Django 自定义路由转换器

步骤 创建自定义转换器类 必须定义 regex 属性(用于匹配参数)。必须实现 to_python 和 to_url 方法。 to_python: 将匹配的参数转换为视图函数可用的 Python 数据。to_url: 将数据转换为 URL 格式(用于反向解析)。 注册转换器 使用…

【Python】构建事件驱动架构:用Python实现实时应用的高效系统

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 事件驱动架构(Event-Driven Architecture,EDA)是一种基于事件流动进行系统设计的模式,广泛应用于游戏开发、实时监控和分布式系统中。它通过解耦事件的生产者和消费者,提升系统的可扩展性和灵活性。本文章从…

【数据分析】基于GEE实现大津算法提取洞庭湖流域水体

大津算法提取水体 1.写在前面2.洞庭湖水体识别1.写在前面 最大类间方差法,也称为Otsu或大津法,是一种高效的图像二值化算法,由日本学者Otsu于1979年提出。该算法基于图像的频率分布直方图,假设图像包含两类像素(前景和背景),并计算出一个最佳阈值,以最大化类间方差,从…

ajax基础

一:express框架 在终端输入nodejs文件名 // 引入express const express require(express); //创建应用对象 const app express(); //创建路由规则 app.get(/,(request,response) > {//设置响应response.send(Hello Express); }); // 监听3000端口 app.lis…

Spring Boot 2 和 Spring Boot 3 中使用 Spring Security 的区别

文章目录 Spring Boot 2 和 Spring Boot 3 中使用 Spring Security 的区别1. Jakarta EE 迁移2. Spring Security 配置方式的变化3. PasswordEncoder 加密方式的变化4. permitAll() 和 authenticated() 的变化5. 更强的默认安全设置6. Java 17 支持与语法提升7. PreAuthorize、…

免费实用在线AI工具集合 - 加菲工具

免费在线工具-加菲工具 https://orcc.online/ 在线录屏 https://orcc.online/recorder 时间戳转换 https://orcc.online/timestamp Base64 编码解码 https://orcc.online/base64 URL 编码解码 https://orcc.online/url Hash(MD5/SHA1/SHA256…) 计算 https://orcc.online/h…