效果图:

pom.xml文件增加依赖:

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

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);

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);

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

SXSSFWorkbook

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

Workbook wb = new SXSSFWorkbook(5000);

这样一旦这个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就别玩那么多花里胡哨的,比如设置什么下拉菜单。

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

  1. EXCEL学习-如何设置下拉菜单

    制作思路: 1.先列示数据源内容 2.通过EXCEL工具选定数据源即可 路径: 数据 - 数据工具 - 数据有效性 - 设置允许序列/来源(√忽略空值/提供下拉箭头) 数据 - 数据工具 - 数据验证 ...

  2. Excel表格如何设置下拉选项并应用到整列

    xcel表格中对于某一列需要进行判定,是或者否,如果每次都要一个一个输入,耗时又麻烦,此时我们可以对这一列设置下拉选项,每次选一下即可.今天就跟大家说一下Excel如何设置下拉选项并应用到整列. 一. ...

  3. excel添加列下拉框票价_Excel多行多列数据源下拉菜单-excel设置下拉菜单

    数据有效性是神兽大家喜爱的一个Excel实用性功能 它不仅能够对单元格的输入数据进行条件限制,还可以在单元格中创建下拉列表菜单方便用户选择输入,如下图 它不仅可以通过下拉菜单快速准确的录入数据,还能在 ...

  4. excel添加列下拉框票价_如何在excel中设置下拉菜单

    excel是日常办公中应用非常多的办公软件之一,其强大的数据统计.分析功能为工作带来不少方便.在EXCEL中设置下拉菜单,以方便输入相同内容.本文就以将性别设置为下拉菜单为例,介绍在excel中设置下 ...

  5. excel表格中如何设置下拉菜单

    一. 直接自定义序列 用"数据/有效性"功能可以达到目的. 以选择性别为例,制作有男.女选项的下拉菜单: 选中"性别"数据区域: 执行"数据/有效性& ...

  6. 在excel的单元格中设置下拉菜单

    很多时候我们在编辑excel的时候,在插入相同的内容时显得比较繁琐,下面教大家在excel单元格中设置下拉菜单,直接点击后更改单元格内容..步骤如下: 1.选中一列,然后点击菜单栏"数据&q ...

  7. 小福利,带你快速入门sumifs多条件求和函数、设置下拉菜单结合vlookup函数双条件查找数据、excel的切片器(表关联)、数据透视表、数据透视图

    第一部分:利用sumifs函数求得双条件下的求和值 如题,现在需要根据下拉菜单年份和商品来查找利润, 第一步,在年份H3设置数据验证,分别是2019,2020,2021 第二步,在商品H4设置数据验证 ...

  8. excel设置下拉菜单,并且不同值会显示不同颜色

    工作中常常要用的excel,每次都会有新的需求,然后不会,然后百度,然后过段时间可能就又忘了,于是就想说,自己记录下来~~~因为自己用的都是2010,其实哪个版本都差不多,都是应该可以找到相应的按钮滴 ...

  9. Excel实现单元格下拉菜单并设置变色

    1. 下拉设置 (1)选择要设置的单元格 ,譬如A1单元格:     (2)选择菜单栏的"数据"→"有效性"→出现"数据有效性"弹出窗口 : ...

  10. excel中如何设置下拉框,并且不同值显示不同颜色

    源地址: http://blog.163.com/s_zhchluo/blog/static/1501470820139172232473/ (一)excel中如何设置下拉框 (excel 2010) ...

最新文章

  1. Keepalived原理与实战精讲
  2. Java8 forEach
  3. 特种部队【动态规划】
  4. OPC的数据访问方法分别有同步访问、异步访问和订阅式
  5. 签约中国搜索,第四范式助力智慧媒体转型发展
  6. 图卷积神经网络(part1)--卷积概述
  7. chrome密码管理
  8. python创建虚拟环境命令_python 创建虚拟环境
  9. 哈希表存在的问题及解决方案
  10. 【Java】 剑指offer(4) 替换空格
  11. python报表自动化系列 - 在Windows中打开指定目录
  12. shell逻辑运算符优先级_linux shell 逻辑运算符、逻辑表达式详解
  13. java sql2000驱动下载_SQL Server 2000 JDBC驱动程序
  14. 计算机的硬盘配额如何更改,磁盘配额是什么怎么设置
  15. 订单超时、定时任务解决方案和思路
  16. ui-bootstrap-tpls 中文 现在还不全的啊~,组件太多了,有空就更新
  17. 王争-算法与数据结构专栏第一期福利笔记(数据结构与算法学习书单)
  18. 使用Audacity软件对清浊音进行时频分析并描述其特点
  19. 【天池】金融风控-贷款违约预测(五)—— 模型融合
  20. Visual C++ Redistributable for VS2005/VS2008/VS2010/VS2012/VS2013/VS2015/VS2017/VS2019 下载地址

热门文章

  1. #Android-中控指纹仪Live R20 开发注意事项#
  2. 2-2-2-webpack打包
  3. 帆软日期格式转换_FineReport中日期时间函数使用总结
  4. HDU 2825 Wireless Password
  5. matlab干什么,matlab有什么用?
  6. PR如何对裁剪之后的视频进行resize,指定到期望大小?
  7. html文件如何显示大纲视图,如何使用大纲视图生成章节目录
  8. 这个世界上人真的分三六九等,你信吗?
  9. Unity Container 应用示例
  10. 世界五大学习方法之费曼技巧