别再瞎摸索!POI 操作 Excel 轻松添加下拉框

POI操作EXCEL增加下拉框

依赖

xml 复制代码
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.2</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.2</version>
</dependency>

有时候通过excel将数据批量导入到系统,而业务操作人员对于一些列不想手动输入,而是采用下拉框的方式来进行选择

采用隐藏sheet页的方式来进行操作

java 复制代码
String sheetName = "supplier_hidden_sheet";

HSSFSheet supplierSheet = workbook.createSheet(sheetName);//隐藏的sheet,用于存放下拉框的限定值
int count = 0;
for(String supplierName : suppliers){
    supplierSheet.createRow(count++).createCell(0).setCellValue(supplierName);
}
      
String col = "A";

//设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列
CellRangeAddressList regions = new CellRangeAddressList(1, dataList.size(), supplierColumn, supplierColumn);
// 这是表示从隐藏sheet页的哪列哪行到哪列哪行  如该格式 supplier_hidden_sheet!$A$1:$A$73 
String cell = "\""+sheetName +"!$"+col+"$1:$"+col+"$"+suppliers.size()+"\"";
// 引用ShtDictionary 的单元格
DVConstraint constraint = DVConstraint.createFormulaListConstraint("INDIRECT("+cell+ ")");
// 数据检验为该格式  =INDIRECT("supplier_hidden_sheet!$A$1:$A$73")
HSSFDataValidation dataValidate = new HSSFDataValidation(regions, constraint);
sheet.addValidationData(dataValidate);
workbook.setSheetHidden(1,true);

可以在EXCEL中的数据有效性看到数据来源

参考文献

相关推荐
37手游后端团队6 小时前
李飞飞团队重磅发布《2025年AI指数报告》:一场重构人类社会的技术奇点
人工智能·后端·程序员
摆烂工程师11 小时前
Grok3 API 已经全网上线了!并且 Grok3 API 可以免费使用
前端·后端·程序员
fyr8975711 小时前
Hexo + Github Pages 搭建个人博客2 优化篇 SEO及图床
程序员
拉丁解牛说技术11 小时前
AI大模型 prompt 工程指南实战
后端·程序员·mcp
摆烂工程师1 天前
Grok3 支持 DeeperSearch 的免费可用次数的查询了
前端·后端·程序员
全宝1 天前
🧑‍💻[2025最新]用oh-my-posh打造个性化终端
程序员·操作系统·visual studio code
栩栩云生1 天前
📥 x-cmd install | bkp - 极简备份利器,让你的数据安全无忧!
python·程序员·命令行
陈随易1 天前
Bun v1.2.9发布了,内置了Redis操作
前端·后端·程序员
陈随易1 天前
请立即使用小程序开发者工具24年9月份版本
前端·后端·程序员
陈哥聊测试1 天前
倒计时三年,国产化替代100%进度走到哪了?
程序员·开源·产品