poi操作Excel给列设置下拉菜单(数据验证)

效果图:
在这里插入图片描述
pom.xml文件增加依赖:

		<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.0.1</version></dependency>
12345

Workbook实现类有三个:HSSFWorkbook、XSSFWorkbook和SXSSFWorkbook,实现类不同,操作方法也不同

HSSFWorkbook

HSSFWorkbook读取操作Excel2003以前(包括2003)的版本,文件扩展名为 .xls,导出的数据最多为65535,优点:一般不会发生内存溢出

设置下拉菜单方式:
String[] strs = {"语文","数学","体育"};
DVConstraint constraint = DVConstraint.createExplicitListConstraint(strs);
//参数顺序:开始行、结束行、开始列、结束列
CellRangeAddressList regions = new CellRangeAddressList(1,objects.size()+1,9,9);
HSSFDataValidation data = new HSSFDataValidation(regions,constraint);
data.setSuppressDropDownArrow(false);
sheet.addValidationData(data);
1234567
XSSFWorkbook

XSSFWorkbook读取操作Excel2007以后(包括2007)的版本,文件扩展名为 .xlsx,导出的数据最多为1048576行,16384列,缺点:有可能发生内存溢出

设置下拉菜单方式:
String[] strs = {"语文","数学","体育"};
XSSFDataValidationHelper helper = new XSSFDataValidationHelper(sheet);
XSSFDataValidationConstraint constraint = (XSSFDataValidationConstraint)helper.createExplicitListConstraint(strs);
//参数顺序:开始行、结束行、开始列、结束列
CellRangeAddressList addressList = new CellRangeAddressList(1,objects.size()+1,8,8);
XSSFDataValidation validation = (XSSFDataValidation)helper.createValidation(constraint, addressList);
validation.setSuppressDropDownArrow(true);
validation.setShowErrorBox(true);
sheet.addValidationData(validation);
123456789

可以根据自己使用的Workbook的具体实现类来选择使用上面哪种方式为列添加数据验证。

SXSSFWorkbook

为了解决XSSFWorkbook有时会发生内存溢出应运而生的,在生成Workbook 时给工作簿一个内存数据存在条数:

Workbook wb = new SXSSFWorkbook(5000);
1

这样一旦这个Workbook中数据量超过5000就会写入到磁盘中,减少内存的使用量来提高速度和避免溢出。
其实,就算生成很小的excel(比如几Mb),它用掉的内存是远大于excel文件实际的size的。如果单元格还有各种格式(比如,加粗,背景标红之类的),那它占用的内存就更多了。对于大型excel的创建且不会内存溢出的,就只有SXSSFWorkbook了。它的原理很简单,用硬盘空间换内存(就像hash map用空间换时间一样)。
SXSSFWorkbook的工作方式决定了它只会保存最新的excel rows在内存里供查看,在此之前的excel rows都会被写入到硬盘里(Windows电脑的话,是写入到C盘根目录下的temp文件夹)。被写入到硬盘里的rows是不可见的/不可访问的。只有还保存在内存里的才可以被访问到。

SXSSF与XSSF的对比:

a. 在一个时间点上,只可以访问一定数量的数据

b. 不再支持Sheet.clone()

c. 不再支持公式的求值

d. 在使用Excel模板下载数据时将不能动态改变表头,因为这种方式已经提前把excel写到硬盘的了就不能再改了
当数据量超出65536条后,在使用HSSFWorkbook或XSSFWorkbook,程序会报OutOfMemoryError:Javaheap space;内存溢出错误。这时应该用SXSSFworkbook。

所以如果使用SXSSFWorkbook操作Excel就别玩那么多花里胡哨的,比如设置什么下拉菜单。

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

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

相关文章

JavaWeb三层架构

分层的目的是为了解耦。解耦就是为了降低代码的耦合度。方便项目后期的维护和升级。 JavaWeb应用程序的架构是一个关键的设计决策&#xff0c;而三层架构&#xff08;MVC模式&#xff09;是一种常见且有效的设计模式&#xff0c;能够清晰地分离不同部分的责任。让我们来深入了…

JavaWeb——前端之HTMLCSS

学习视频链接&#xff1a;https://www.bilibili.com/video/BV1m84y1w7Tb/?spm_id_from333.999.0.0 一、Web开发 1. 概述 能通过浏览器访问的网站 2. Web网站的开发模式——主流是前后端分离 二、前端Web开发 1. 初识 前端编写的代码通过浏览器进行解析和渲染得到我们看到…

Redis源码——压缩列表

压缩列表ziplist本质上就是一个字节数组&#xff0c;是Redis为了节约内存而设计的一种线性数据结构&#xff0c;可以包含多个元素&#xff0c;每个元素可以是一个字节数组或一个整数。Redis的有序集合、散列和列表都直接或者间接使用了压缩列表。当有序集合或散列表的元素个数比…

项目经验简单总结

引擎 unity 2020 语言 C# lua python(用于工具链) java (用于SDK对接) js&#xff08;PC WEB SDK对接&#xff09; 编辑器 VS VSCODE IDEA eclipse 项目开发模块规划分 主项目工程&#xff0c;UI资源项目工程&#xff0c;模型场景资源项目工程 主项目工程&#xff1a;所有的…

qt图像绘制QPainter

QPainter 以下是一些常用的 Qt::PenStyle 枚举值&#xff1a; Qt::NoPen&#xff1a;无线条。Qt::SolidLine&#xff1a;实线。Qt::DashLine&#xff1a;虚线&#xff0c;由短划线组成。Qt::DotLine&#xff1a;点线&#xff0c;由点组成。Qt::DashDotLine&#xff1a;点划线&…

炫酷鼠标悬停随机渐变文本动画效果

如图所示&#xff0c;这是一个很炫酷的鼠标悬停动画效果&#xff0c;卡片的文字随着鼠标的移动不断变化着&#xff0c;且文字的颜色伴随着渐变色跟随鼠标移动&#xff0c;中心部分是突出的LOGO效果&#xff0c;整个交互效果十分引人注目。原效果来源于 evervault.com/customers…

Head First Design Patterns - 装饰者模式

什么是装饰者模式 装饰者模式动态地将额外责任附加到对象上。对于拓展功能&#xff0c;装饰者提供子类化的弹性替代方案。 --《Head First Design Patterns》中的定义 为什么会有装饰者模式 根据上述定义&#xff0c;简单来说&#xff0c;装饰者模式就是对原有的类&#xff0c…

绝地求生:PUBG到底怎么穿?

闲游盒突然就认为这条裤子很不错&#xff0c;褶皱设计&#xff0c;版型&#xff0c;和其他饰品的搭配能力方面&#xff0c;私以为比柏林裤和悲喜白色长裤的可搭配能力要强一些。可能是因为看起来更日常化&#xff0c;在我进行尝试后发现柏林裤版型在穿鞋的时候会露出脚脖子&…

目标检测-Owo Stage-YOLOv2

文章目录 前言一、YOLOv2的网络结构和流程二、YOLOv2的创新点预处理网络结构训练 总结 前言 根据前文目标检测-One Stage-YOLOv1可以看出YOLOv1的主要缺点是&#xff1a; 和Fast-CNN相比&#xff0c;速度快&#xff0c;但精度下降。&#xff08;边框回归不加限制&#xff09;…

2023年最新版的linux运维面试题(四)

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号&#xff1a;网络豆云计算学堂 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a; 网络豆的主页​​​​​ 写在前面 大家好&#xff0c;我是网络豆&#xff0…

oracle 9i10g编程艺术-读书笔记2

配置Statspack 安装Statspack需要用internal身份登陆&#xff0c;或者拥有SYSDBA(connect / as sysdba)权限的用户登陆。需要在本地安装或者通过telnet登陆到服务器。 select instance_name,host_name,version,startup_time from v$instance;检查数据文件路径及磁盘空间&…

CNAS中兴新支点——软件测试报告模板分享

第三方检测机构推荐 欢迎私信或评论咨询&#xff0c;也可看本人收藏夹获取详细咨询信息。下面开始进入正文 1、测试背景&#xff1a; 本次测试的软件是一款名为“XXX”的应用程序&#xff0c;主要用于解决某种需求。本次测试目的是发现软件中的问题和缺陷&#xff0c;并进行优…

【VMware】Windows安装MySQL及网络配置---图文并茂详细介绍

一 安装MySQL ① 连接虚拟机传输MySQL压缩包 先查看虚拟机中的地址 命令&#xff1a; ipconfig 主机连接 在主机连接虚拟机后&#xff0c;将mysql压缩包和Navicat安装包复制到虚拟机下即可 ②解压MySQL压缩包 ③ my文件拷贝mysql安装根目录下 如下图的第一步&#xff0c;…

2024年山东省中职“网络安全”试题——B-3:Web安全之综合渗透测试

B-3&#xff1a;Web安全之综合渗透测试 服务器场景名称&#xff1a;Server2010&#xff08;关闭链接&#xff09; 服务器场景操作系统&#xff1a;"需要环境有问题加q" 使用渗透机场景Kali中的工具扫描服务器&#xff0c;通过扫描服务器得到web端口&#xff0c;登陆…

计算机专业个人简历范文(8篇)

HR浏览一份简历也就25秒左右&#xff0c;如果你连「好简历」都没有&#xff0c;怎么能找到好工作呢&#xff1f; 如果你不懂得如何在简历上展示自己&#xff0c;或者觉得怎么改简历都不出彩&#xff0c;那请你一定仔细读完。 互联网运营个人简历范文> 男 22 本科 AI简历…

【Pytorch】Pytorch或者CUDA版本不符合问题解决与分析

NVIDIA CUDA Toolkit Release Notes Package installation issues INSTALL PYTORCH 先声毒人&#xff1a;最好资料就是上面三份资料&#xff0c;可以通过官网明确的获取一手信息&#xff0c;你所遇到的99%的问题都可以找到&#xff0c;明确的解决方案&#xff0c;建议最好看…

linux sh 脚本文件换行错误

windows 写好的脚本到服务运行不起来&#xff0c;显示换行问题 因为 windwos 的换行和 linux 的换行风格不同 解决办法&#xff1a;在使用的文本编辑器中&#xff0c;修改格式为 unix 格式 以 notepad 为例&#xff0c;在编辑 -> 文档格式转换中设置格式为 Unix

fmincon函数的决策变量可以是二维矩阵,但不建议是高维矩阵

1&#xff09;二维矩阵代码 clear all clc% 定义目标函数 fun (x) sum(sum(x.^2));% 初始矩阵 x0 2 rand(2, 2);% 定义空的线性不等式约束 A []; b [];% 定义空的线性等式约束 Aeq []; beq [];% 定义变量的上下界 lb ones(2,2); ub [];% 使用 fmincon 求解 options …

Rancher 单节点 docker 部署备份与恢复

Rancher 单节点 docker 部署备份与恢复 1. 备份集群 获取 rancher server 容器名&#xff0c;本例为 angry_aryabhata docker ps | grep rancher/rancher6a27b8634c80 rancher/rancher:v2.5.14 xxx angry_aryabhata停止容器 docker stop angry_aryabhata创建备…

基于Spring Boot的美妆分享系统:打造个性化推荐、互动社区与智能决策

基于Spring Boot的美妆分享系统&#xff1a;打造个性化推荐、互动社区与智能决策 1. 项目介绍2. 管理员功能2.1 美妆管理2.2 页面管理2.3 链接管理2.4 评论管理2.5 用户管理2.6 公告管理 3. 用户功能3.1 登录注册3.2 分享商品3.3 问答3.4 我的分享3.5 我的收藏夹 4. 创新点4.1 …