别再瞎摸索!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中的数据有效性看到数据来源

参考文献

相关推荐
爱勇宝15 小时前
从 Ctrl+CV 到 Enter:程序员正在失去什么
前端·后端·程序员
DyLatte17 小时前
AI 时代,最危险的不是被替代,而是努力不沉淀
前端·后端·程序员
Coffeeee19 小时前
闲聊几句,Android老哥们,你们多久没做技改需求了
android·程序员·代码规范
字节跳动数据库20 小时前
文章分享——相似函数处理方法
人工智能·后端·程序员
AskHarries21 小时前
多 Agent 与任务队列:什么时候需要拆分任务
程序员
蝎子莱莱爱打怪1 天前
DSpark 讲透:DeepSeek 不换模型,硬把 V4 提速 85%,是怎么做到的?
人工智能·面试·程序员
AskHarries2 天前
知识库问答:RAG、文件索引和权限边界
程序员
爱勇宝2 天前
小红花成长新版:模板来了,鼓励也更容易开始
前端·后端·程序员
玄玄子2 天前
webpack publicPath作用原理
前端·webpack·程序员
爱勇宝2 天前
大多数人不是在使用 AI 赚钱,而是在帮 AI 公司赚钱
前端·后端·程序员