EasyExcel 自适应列宽、隐藏列、动态列、单元格下拉框选择数据、单元格文本格式

前言

项目中用到EasyExcel读写Excel,用到了一下功能,这里做个笔记:

  1. 列宽自适应:自适应宽度
  2. 隐藏列:隐藏某些列
  3. 动态列:固定列 + 动态的生成Excel列
  4. 单元格下拉框选择数据:设计单元格下拉数据,并且加校验
  5. 单元格文本格式:设置文本格式

EasyExcel 版本:3.0.x

EasyExcel官方文档

核心代码实现

  • 列宽自适应: 注册一个EasyExcel内置的宽度策略对象即可
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
  • 动态列:这里使用的 List 集合
List<List<String>> heads = new ArrayList<>();
List<String> head0 = new ArrayList<>();
// 固定列
head0.add("ID");
heads.add(head0);
List<String> head1 = new ArrayList<>();
head1.add("Name");
heads.add(head1);
// 动态列
for (xxx) {List<String> dnys = new ArrayList<>();dnys.add("Colxx");heads.add(.);
}
List<String> end = new ArrayList<>();
end.add("End");
heads.add(end);// 设置列
EasyExcel.write(out).head(heads)
  • 单元格下拉框选择数据:注册一个SheetWriteHandler接口实现类 afterSheetCreate 方法,这里使用匿名内部类。
.registerWriteHandler(new SheetWriteHandler() {@Overridepublic void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {Sheet sheet = writeSheetHolder.getSheet();DataValidationHelper helper = sheet.getDataValidationHelper();// 设置下拉列表单元格的位置首行 末行 首列 末列CellRangeAddressList rangeList = new CellRangeAddressList(firstRow, lastRow, firstCol, lastCol);// 设置下拉列表的值:strArr 为字符串数组,下拉框的值DataValidationConstraint constraint = helper.createExplicitListConstraint(strArr);// 设置错误提示DataValidation validation = helper.createValidation(constraint, rangeList);// 非下拉选项的值不能输入validation.setErrorStyle(DataValidation.ErrorStyle.STOP);validation.setSuppressDropDownArrow(true);validation.setShowErrorBox(true);validation.createErrorBox("提示", "请选择/输入下拉选项中的值");sheet.addValidationData(validation);}}
)
  • 单元格隐藏、单元格文本格式:注册一个CellWriteHandler,覆盖afterCellDispose方法,这里使用匿名类
.registerWriteHandler(new CellWriteHandler() {@Overridepublic void afterCellDispose(CellWriteHandlerContext context) {// 设置隐藏列context.getWriteSheetHolder().getSheet().setColumnHidden(0, true);for (WriteCellData<?> writeCellData : context.getCellDataList()) {// 设置文本格式DataFormatData dataFormatData = new DataFormatData();dataFormatData.setIndex((short) 49);writeCellData.getOrCreateStyle().setDataFormatData(dataFormatData);}}
})

最后指定sheet名称,写入数据即可。

.sheet("导入").doWrite(datas)

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

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

相关文章

深搜,LeetCode 2368. 受限条件下可到达节点的数目

一、题目 1、题目描述 现有一棵由 n 个节点组成的无向树&#xff0c;节点编号从 0 到 n - 1 &#xff0c;共有 n - 1 条边。 给你一个二维整数数组 edges &#xff0c;长度为 n - 1 &#xff0c;其中 edges[i] [ai, bi] 表示树中节点 ai 和 bi 之间存在一条边。另给你一个整数…

WPF的DataGrid设置标题头

要设置DataGrid标题头的分割线、背景色和前景色等属性&#xff0c;您可以使用DataGrid的样式和模板来自定义标题头的外观。下面是详细解释以及示例代码&#xff1a; 分割线设置&#xff1a; 您可以使用DataGrid.ColumnHeaderStyle样式中的BorderThickness和BorderBrush属性来设…

Java基础-java开发入门

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 一、什么是Java 二、Java语言的特点 三、什么是JDK 四、第一个Java程序 一、什么是Java Java是由Sun …

electron nsis 安装包 window下任务栏无法正常固定与取消固定

问题 win10系统下&#xff0c;程序任务栏在固定后取消固定&#xff0c;展示的程序内容异常。 排查 1.通过论坛查询&#xff0c;应该是与app的api setAppUserModelId 相关 https://github.com/electron/electron/issues/3303 2.electron-builder脚本 electron-builder…

二月打戏最燃的国漫推荐,斗罗大陆2上榜,吞噬星空堪称第一

2024年开年&#xff0c;国漫就给我们带来了很大的惊喜&#xff0c;在刚刚过去的2月&#xff0c;有几部中出现了超燃的打戏&#xff0c;看得人热血沸腾。尤其是科幻番《吞噬星空》中的一场1V1对决&#xff0c;特效和设计都堪称第一。还有哪些国漫上榜呢&#xff1f;下面就一起来…

TCP为什么要三次握手?

TCP三次握手协议是为了在不可靠的互联网环境中可靠地建立起一个连接&#xff0c;三次握手可以确保两端的发送和接收能力都是正常的。 那么&#xff0c;为什么是三次而不是二次或四次握手呢&#xff1f; 为什么不是二次握手&#xff1f; 如果是二次握手&#xff0c;即客户端发…

网络编程 io_uring

io_uring 1、概述 io_uring是Linux&#xff08;内核版本在5.1以后&#xff09;在2019年加入到内核中的一种新型的异步I/O模型&#xff1b; io_uring使用共享内存&#xff0c;解决高IOPS场景中的用户态和内核态的切换过程&#xff0c;减少系统调用&#xff1b;用户可以直接向…

vue + cesium初始化地图 + 鼠标经过地图(点、线等其他实体)样式

vue cesium初始化地图 鼠标经过地图&#xff08;点、线等其他实体&#xff09;样式 export function initMap(mapViewer) {Cesium.Ion.defaultAccessToken "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI0OTUzOGJhMy1iNzVjLTQwZjItYWYyNy03YjA4MjM0YWE2MWMiLCJpZ…

Unity(第二十二部)官方的反向动力学一般使用商城的IK插件,这个用的不多

反向动力学&#xff08;Inverse Kinematic&#xff0c;简称IK&#xff09;是一种通过子节点带动父节点运动的方法。 正向动力学 在骨骼动画中&#xff0c;大多数动画是通过将骨架中的关节角度旋转到预定值来生成的&#xff0c;子关节的位置根据父关节的旋转而改变&#xff0c;这…

编写脚本一键安装rsyslog

脚本分解 环境检测部分 检查操作系统 #!/bin/bash# 检查是否为 Debian 类型 if [ -f /etc/debian_version ]; thenecho "当前操作系统是 Debian 类型"SYSLOG_SERVICE"rsyslog"INSTALL_COMMAND"apt-get install -y"CONFIG_FILE"/etc/rsys…

Vmware esxi虚拟主机状态无效,无法注销重启等操作修复解决

问题 装有ESXI系统的服务器在强制关机启动后&#xff0c;显示虚拟机状态是无效的&#xff0c;并且无法进行任何操作。 解决办法 对出问题的虚拟机重新注册 1、开启esxi系统的ssh功能 2、取消注册出问题的虚拟机 找到问题的虚拟机 [rootlocalhost:~] vim-cmd vmsvc/getal…

烧脑问题解决办法:如何选择一款合适自己的手机流量卡

现在社会人们越来越离不开手机了&#xff0c;手机给我们生活带来了翻天覆地的变化&#xff0c;手机需要最多的就是流量了&#xff0c;所以选择一款合适自己的手机流量卡就显得尤为重要了&#xff0c;今天小编就给大家来分享一下我的经验&#xff0c;希望对大家能有帮助&#xf…

python基础-基本数据类型深入-2.1

目录 元组 什么是元组&#xff08;tuple&#xff09; 元组练习-1 元组的基本操作 元组常用内建函数 列表和元组的区别与总结 元组练习-2 元组练习-3 元组 什么是元组&#xff08;tuple&#xff09; 与列表&#xff08;list&#xff09;一样&#xff0c;元组&#xff0…

【Web安全靶场】sqli-labs-master 54-65 Challenges 与62关二分法和like模糊搜索

sqli-labs-master 54-65 Challenges 其他关卡和靶场见专栏… 文章目录 sqli-labs-master 54-65 Challenges第五十四关-联合注入第五十五关-联合注入第五十六关-联合注入第五十七关-联合注入第五十八关-报错注入第五十九关-报错注入第六十关-报错注入第六十一关-报错注入第六十…

grid的删除

/u01/11.2.0/grid 为 grid 用户的安装主目录 1、删除 crs 配置信息 root: cd /u01/11.2.0/grid/crs/install perl rootcrs.pl -deconfig -force 2、删除 crs 配置信息&#xff0c;并卸载软件 cd /u01/11.2.0/grid/deinstall ./deinstall grid user: ./deinstall -home /…

Mysql与StarRocks语法上的不同

&#x1f413; 序言 StarRocks 是新一代极速全场景 MPP (Massively Parallel Processing) 数据库。StarRocks 的愿景是能够让用户的数据分析变得更加简单和敏捷。用户无需经过复杂的预处理&#xff0c;可以用StarRocks 来支持多种数据分析场景的极速分析。 &#x1f413; 语法…

嵌入式驱动学习第一周——linux的休眠与唤醒

前言 本文介绍进程的休眠与唤醒。 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程&#xff0c;未来预计四个月将高强度更新本专栏&#xff0c;喜欢的可以关注本博主并订阅本专栏&#xff0c;一起讨论一起学习。现在关注就是老粉啦&#xff01; 行文目录 前言1. 阻塞和非阻…

第二节 数学知识补充

一、线性代数 向量的 L 2 L_2 L2​范数&#xff08;Euclidean范数/Frobenius范数&#xff09;&矩阵的元素形式范数 向量的 L 2 L_2 L2​范数&#xff1a; ∣ ∣ x ∣ ∣ 2 ( ∣ x 1 ∣ 2 ⋯ ∣ x m ∣ 2 ) 1 2 ||x||_2(|x_1|^2\cdots|x_m|^2)^{\frac12} ∣∣x∣∣2​(∣…

Verilog参数、Verilog参数和属性冲突、整数处理

Verilog参数 Verilog参数执行以下操作&#xff1a; •允许您创建易于重用和扩展的参数化代码。 •使代码更可读、更紧凑、更易于维护。 •将此类功能描述为&#xff1a; ○ 总线尺寸 ○ 建模设计单元中某些重复元素的数量 •是常数。对于参数化模块的每个实例化&#xf…

电脑桌面便签哪个好,好用的电脑桌面便签推荐

在如今信息爆炸的时代&#xff0c;人们的工作和生活节奏越来越快&#xff0c;记事和备忘变得尤为重要。而电脑桌面便签作为一种方便快捷的记录工具&#xff0c;备受广大用户青睐。那么&#xff0c;电脑桌面便签哪个好&#xff0c;哪个更加出色呢&#xff1f; 作为一名人事专员…