导出下拉列表的两种小技巧【EasyPoi实战系列】- 第473篇

news2024/11/16 13:57:19

历史文章(文章累计460+)

《国内最全的Spring Boot系列之一》

《国内最全的Spring Boot系列之二》

《国内最全的Spring Boot系列之三》

《国内最全的Spring Boot系列之四》

《国内最全的Spring Boot系列之五》

《国内最全的Spring Boot系列之六》

用Midjourney画个美女,AI绘画也太强大了!!! - 第8篇

【EasyPoi实战系列】Spring Boot使用EasyPoi实现多Sheet导出 - 第470篇

【EasyPoi实战系列】Spring Boot使用EasyPoi动态控制导出的列 - 第471篇100万数据导出,居然爆炸了OutOfMemoryError?【EasyPoi实战系列】- 第472篇

悟纤:师傅,在忙吗?

师傅:徒儿,何事?

悟纤:想请教师傅一个小小的问题。

师傅:那你这个小小的问题,5分钟可以搞定不?

悟纤:相信师傅的功力,要不了5分钟。

师傅:那你且说说看来着。

悟纤:就是我想在导出的单元格中,增加一个下拉的选项。

师傅:这个呀,使用了EasyPoi就特别简单,根本不是事,1分钟给你讲清楚。

悟纤:还的是师傅,那咱们马上开始吧~

导读

在实际的excel中,会有下拉的一个选项,供用户进行下拉修改下拉的选项。

对于这样的需求如何实现呢?

@Excel 加入 addressList 是否生成下拉的选项,默认false

目前下拉只支持replace和dict两个取值地方生成。

根据对应的值生成相应的下拉,xssf下拉rowMax = 100万,hssf下拉maxRow=65536,从数据第一行开始生成,使用方法也比较简单。

说明:本节的例子的导出实体类是基于前面的章节的实体类进行使用的,所以看的有点蒙圈的小伙伴可以查看前面的文章:

👇🏻👇🏻👇🏻EasyPoi实战系列

01.《【EasyPoi实战系列】Spring Boot集成EasyPoi - 第467篇》

02.《【EasyPoi实战系列】Spring Boot使用EasyPoi的注解让表格更漂亮以及图片的导出 - 第468篇》

03.《【EasyPoi实战系列】Spring Boot使用EasyPoi实现一对多的导出 - 第469篇》

04.《【EasyPoi实战系列】Spring Boot使用EasyPoi实现多Sheet导出 - 第470篇》

05.《【EasyPoi实战系列】Spring Boot使用EasyPoi动态控制导出的列 - 第471篇》

06.《100万数据导出,居然爆炸了OutOfMemoryError?【EasyPoi实战系列】- 第472篇》

一、下拉的生成方案一:replace+ addressList

第一种方案是最简单的实现方案,只需要添加一些配置即可:

@Excel(name = "性别",replace = { "男生_1", "女生_2" }, addressList = true)private Integer sex;

主要是replace和addressList这两个属性配置。

导出的结果如下:

在这里要注意下,这里就不能使用suffix这个属性了,如果是以下这个写法:

@Excel(name = "性别",replace = { "男_1", "女_2" }, suffix = "生", addressList = true)private Integer sex;

那么导出的结果是:

这里的suffix并不能作为下拉的选项后缀,这个是否是框架应该优化的一个点呢 ?

二、下拉的生成方案二:dict+ addressList

这种方案是使用属性dict,指定一个key,这里的key的逻辑是要实现一个接口IExcelDictHandler进行处理的。

(1)在注解中添加属性dict:

@Excel(name = "性别",dict = "sex",addressList = true)private Integer sex;

(2)实现接口IExcelDictHandler,添加dict=sex的字段信息:

package com.example.config;import cn.afterturn.easypoi.handler.inter.IExcelDictHandler;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * */public class ExcelDiceAddressListHandlerImpl implements IExcelDictHandler {    /**     * 返回字典所有值     * key: dictKey     *     * @param dict 字典Key     * @return     */    @Override    public List<Map> getList(String dict) {        List<Map> list    = new ArrayList<>();        Map<String, String> dictMap = new HashMap<>();        dictMap.put("dictKey", "0");        dictMap.put("dictValue", "女孩子");        list.add(dictMap);        dictMap = new HashMap<>();        dictMap.put("dictKey", "1");        dictMap.put("dictValue", "男孩子");        list.add(dictMap);        return list;    }    @Override    public String toName(String dict, Object obj, String name, Object value) {        if ("sex".equals(dict)) {            int level = Integer.parseInt(value.toString());            switch (level) {                case 1:                    return "男孩子";                case 0:                    return "女孩子";            }        }        return null;    }    @Override    public String toValue(String dict, Object obj, String name, Object value) {        if ("sex".equals(dict)) {            int level = Integer.parseInt(value.toString());            switch (level) {                case 1:                    return "男孩子";                case 0:                    return "女孩子";            }        }        return null;    }}

(3)在导出的方法中,添加字段处理类:

ExportParams exportParams = new ExportParams(title, sheetName,ExcelType.XSSF);exportParams.setDictHandler(new ExcelDiceAddressListHandlerImpl());defaultExportX(list, pojoClass, fileName, response,exportParams);

这里核心的代码是:

exportParams.setDictHandler(new ExcelDiceAddressListHandlerImpl());

导出的结果:

我就是我,是颜色不一样的烟火。
我就是我,是与众不同的小苹果。

à悟纤学院:https://t.cn/Rg3fKJD

学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!

SpringBoot视频:http://t.cn/A6ZagYTi

SpringBoot交流平台:https://t.cn/R3QDhU0

SpringSecurity5.0视频:http://t.cn/A6ZadMBe

ShardingJDBC分库分表:http://t.cn/A6ZarrqS

分布式事务解决方案:http://t.cn/A6ZaBnIr

JVM内存模型调优实战:http://t.cn/A6wWMVqG

Spring入门到精通:https://t.cn/A6bFcDh4

大话设计模式之爱你:https://dwz.cn/wqO0MAy7

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

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

相关文章

【SVN】windows下的SVN客户端访问ubuntu下的SVN服务器

目录 第一部分 windows创建本地版本库、连接ubuntu的SVN服务器 步骤0&#xff1a; 步骤一&#xff1a;创建windows本地版本库 步骤二&#xff1a;checkout检测 步骤三&#xff1a;输入之前配置的用户名和密码 第二部分 windows上传文件至SVN服务器 步骤一&#xff1a;添加…

python基础学习2【numpy生成数组+random随机数生成+索引+拼接+切割【jupyter学习】】

接上一期jupyter结尾的一小部分&#xff1a; 这四个用好了&#xff0c;排版得好你的代码看起来就像一篇文章一样~ 导出功能&#xff1a; NumPy数值计算基础 NumPy数组对象ndarray&#xff08;存储单一数据类型的多维数组&#xff09;: 属性 说明ndim返回int&#xff0c;表示数…

记录一次 bin/rails db:migrate 报错

theme: condensed-night-purple bin/rails db:migrate 最近在倒腾后端&#xff0c;用的是 Ruby on Rails&#xff0c;数据库是 Postgres&#xff0c;在执行数据库迁移命令(bin/rails db:migrate)时&#xff0c;模型更新出错了 :( bin/rails db:migrate:status 提示说&#xff0…

毕业生高频常用材料线上签,高校毕业季契约锁电子签章一站式助力

据人社部消息&#xff0c;2023年全国高校毕业生总规模将达1158万人&#xff01;毕业季开启&#xff0c;全国各地高校普遍面临三方协议、成绩单、证书、证明等毕业生高频常用材料签署量激增的现状。学生、教职工、学校常常疲于应对机械化的材料盖章工作。 #毕业季高频常用材料清…

剑走偏锋,正经程序员都在用的无头浏览器到底有多神奇?

浏览器是再熟悉不过的东西了&#xff0c;几乎每个人用过&#xff0c;比如 Chrome、FireFox、Safari&#xff0c;尤其是我们程序员&#xff0c;可谓开发最强辅助&#xff0c;摸鱼最好的伴侣。 浏览器能干的事儿&#xff0c;无头浏览器都能干&#xff0c;而且很多时候比标准浏览…

主动发现系统稳定性缺陷:混沌工程 | 京东云技术团队

这是一篇较为详细的混沌工程调研报告&#xff0c;包含了背景&#xff0c;现状&#xff0c;京东混沌工程实践&#xff0c;希望帮助大家更好的了解到混沌工程技术&#xff0c;通过混沌工程实验&#xff0c;更好的为系统保驾护航。 一、概述 1.1 研究背景 Netflix公司最早系统化…

SpringBoot自动配置的模版引擎

文章目录 目录 一、Thymeleaf 1.什么是Thymeleaf? 2.什么是模版引擎? 3.JAVA中的SPI(Service Provider interface)机制? 4.META-INF目录是干嘛用的? 总结 前言 一、Thymeleaf 1.什么是Thymeleaf? hymeleaf是试用于Web和独立环境的现代服务器端Java模版引擎 目的:…

使用Photoshop证件照制作

利用Photoshop从普通照片制作出证件照 先取一张普通照片 首先新建一个证件照的图片 分辨率350dpi尺寸大小26mm32mm像素大小358像素&#xff08;宽&#xff09;441像素 颜色模式24位RGB真彩色 1&#xff0c;抠图&#xff0c;用魔棒工具三秒钟搞定&#xff0c;如果不太复杂的图像…

USB EHCI知识点

1 EHCI和Companion UHCI端口切换 1.1 ICH6 EHCI 如果PCI控制器包括了伴随控制器&#xff0c;那么USB 2.0 HC&#xff08;Host Controller&#xff09;必须作为一个多功能PCI设备使用。伴随HC的功能码必须小于EHCI HC功能码。如果一个 PCI设备仅仅包括一个EHCI控制器&#xff08…

一站式完成车牌识别任务:从模型优化到端侧部署

交通领域的应用智能化不断往纵深发展&#xff0c;其中最为成熟的车牌识别早已融入人们的日常生活之中&#xff0c;在高速公路电子收费系统、停车场等场景中随处可见。一些企业在具体业务中倾向采用开源方案降低研发成本&#xff0c;但现有公开的方案中少有完成端到端的车牌应用…

Blindly Assess Image Quality in the Wild Guided by ASelf-Adaptive Hyper Network

Abstract 真实失真图像的盲图像质量评估(BIQA)一直是一个具有挑战性的问题&#xff0c;因为在野外采集的图像包含各种各样的内容和各种类型的失真。目前绝大多数的BIQA方法都专注于如何预测合成图像的质量&#xff0c;但当应用于真实世界的失真图像时却失败了。为了应对这一挑…

Android Activity和Fragment的对比

参考来源 参考来源 参考来源 状态方法对比 onAttach() 作用&#xff1a;fragment已经关联到activity&#xff0c;这个时候 activity已经传进来了&#xff0c; 获得activity的传递的值 就可以进行 与activity的通信里&#xff0c; 当然也可以使用getActivity(),前提是这个fragm…

在CSDN逮到一个阿里10年老测试,聊过之后收益良多...

老话说的好&#xff0c;这人呐&#xff0c;一但在某个领域鲜有敌手了&#xff0c;就会闲得蛋疼。 前几天我在上班摸鱼刷CSDN的时候认识了一位阿里测试大佬&#xff0c;在阿里工作了10年&#xff0c;因为本人天赋比较高&#xff0c;平时工作也兢兢业业&#xff0c;现在企业内有…

ChatGPT - 基于 ChatGLM-6B 搭建私有 ChatGPT 在线聊天服务

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/131104546 Paper&#xff1a;GLM: General Language Model Pretraining with Autoregressive Blank Infilling 一篇于2022年发表在ACL会…

平面坐标变换(单应性变换/Homography变换)

单应性(homography)变换用来描述物体在两个平面之间的转换关系&#xff0c;可以用于描述平移、翻转、缩放、旋转、仿射变换等。其是对应齐次坐标下的线性变换&#xff0c;可以通过矩阵表示&#xff1a; 其中&#xff0c;H为单应性变换矩阵&#xff0c;假设变换前坐标为(x,y)&am…

指针--按值调用与模拟按引用调用,非法访问内存

在前面的章节介绍过普通变量作函数参数的方法&#xff0c;它其实是一种按值调用&#xff08;Call by Value&#xff09;的方法&#xff0c;即程序将函数调用语句中的实参的一份副本传给函数的形参。 例题&#xff1a;演示程序按值调用的例子。 #include <stdio.h> void…

关于ASO优化的搜索指数

搜索指数指数可以看出该关键词的热度&#xff0c;每一个关键词都对应着相应的指数&#xff0c;它代表着有多少人在搜索这个词。同一个词搜索的人越多&#xff0c;该关键词的热度指数就越高。 在应用商店内每天都会有用户去搜索应用&#xff0c;那么关键词的热度值至少是100。热…

三分钟免费将 Claude API 接入个人服务

首先我们介绍一下今天的主角 Claude Claude 是最近新开放的一款 AI 聊天机器人&#xff0c;是世界上最大的语言模型之一&#xff0c;比之前的一些模型如 GPT-3 要强大得多&#xff0c;因此 Claude 被认为是 ChatGPT 最有力的竞争对手。Claude 的研发公司是专注人工智能安全和研…

干货|SpringCloud-Eureka注册中心、服务提供者与消费者

内容速览&#xff1a; 一、关于注册中心、服务注册、服务发现 1问&#xff1a;为什么需要注册中心&#xff1f;2问&#xff1a;什么是服务注册&#xff1f;3问&#xff1a;什么是服务发现&#xff1f; 二、关于 Eureka 实现服务注册与服务发现 1.Eureka的特点2.Eureka注册中心…

Linux防火墙学习笔记3

iptables链的概念&#xff1a; 当客户端访问服务器端的Web服务的时候&#xff0c;客户端发送请求报文到网卡&#xff0c;而TCP/IP协议栈是属于内核的一部分。客户端的请求报文会通过内核的TCP协议传输到用户空间的Web服务&#xff0c;而客户端报文的目的地址为Web服务器所监听的…