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

news/2024/7/21 3:52:28 标签: excel, EasyExcel

前言

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

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

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() {
        @Override
        public 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() {
    @Override
    public 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.niftyadmin.cn/n/5395757.html

相关文章

开源计算机视觉库OpenCV常用的API介绍

阅读本文之前请参阅-----开源计算机视觉库OpenCV详细介绍 OpenCV&#xff08;开源计算机视觉库&#xff09;是一个跨平台的计算机视觉和机器学习软件库&#xff0c;它提供了大量的API&#xff08;应用程序编程接口&#xff09;&#xff0c;用于处理图像和视频分析、对象检测、面…

spark stream:从Kafka中读取数据

一、添加依赖 ThisBuild / version : "0.1.0-SNAPSHOT"ThisBuild / scalaVersion : "2.12.12" libraryDependencies Seq( "org.apache.spark" % "spark-core_2.12" % "3.0.0") libraryDependencies Seq( "org.apach…

JDK安装及环境变量配置(保姆级教程)

什么是JDK&#xff1f; JDK&#xff08;Java Development Kit&#xff09;是Java开发工具包的缩写 它是Java开发人员必备的软件包之一。JDK包含了用于编译、调试和运行Java程序的各种工具和库。通过安装JDK&#xff0c;开发人员可以开始编写、编译和运行Java应用程序、Applet和…

HTML5 CSS3 提高

一&#xff0c;HTML5的新特性 这些新特性都有兼容性问题&#xff0c;基本是IE9以上版本的浏览器才支持&#xff0c;如果不考虑兼容性问题&#xff0c;可以大量使用这些新特性。 1.1新增语义化标签 注意&#xff1a; 1这种语义化标签主要是针对搜索引擎的 2这些新标签在页面…

远程控制桌面,让电脑办公更简单

随着科技的不断发展&#xff0c;远程办公已经成为了越来得越多企业和个人的选择。远程控制电脑办公&#xff0c;仅需1款软件即可轻松get&#xff01; 1.绿虫电脑管理软件 是一款功能强大的办公电脑管理软件&#xff0c;仅需安装在被控端电脑&#xff0c;主控端通过网页登录后…

git submodule 模块化管理

Git Submodule 是 Git 版本控制系统中的一项功能&#xff0c;它允许你将一个 Git 仓库嵌套在另一个仓库中。通过使用 Submodule&#xff0c;你可以在一个仓库中引入其他仓库的特定版本&#xff0c;同时保留这些子模块的独立性。 1、添加并初始化 Submodule a、添加 Submodule…

全量知识系统问题及SmartChat给出的答复 之5

Q15. 支持前端&#xff08;知识表征&#xff09;的自然语言能力 需要一个 元语言注释工具 以及两个库&#xff08;叙词库和语料库&#xff09;和主题词表。请 1)设计 两个库和主题词表的结构 &#xff0c;2&#xff09;分别设计它们的接口&#xff0c;3&#xff09;通过调用它们…

Eureka简介与使用浅析

Eureka 简介 Eureka 是 Netflix 开发的一款开源服务发现组件&#xff0c;主要用于构建云环境下的微服务架构。它是基于 REST (Representational State Transfer) 的服务&#xff0c;扮演了服务注册与发现的角色&#xff0c;在分布式系统中尤为重要。Eureka Server 作为一个中心…