废话少说,直接上代码:
package com.fst.attachment.controller;
import java.io.FileOutputStream;
import org.apache.poi.hssf.usermodel.DVConstraint;
import org.apache.poi.hssf.usermodel.HSSFDataValidation;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.DataValidation;
import org.apache.poi.ss.usermodel.DataValidationConstraint;
import org.apache.poi.ss.usermodel.DataValidationHelper;
import org.apache.poi.ss.usermodel.Name;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddressList;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFDataValidation;
import org.apache.poi.xssf.usermodel.XSSFDataValidationConstraint;
import org.apache.poi.xssf.usermodel.XSSFDataValidationHelper;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class TestPOIDropDown {
public static void main(String[] args) throws Exception {
int len = 200;
String[] datas = new String[len];
for (int i = 0; i < len; i++) {
datas[i] = i + "我是下拉框枚举项---";
}
Workbook workbook = XSSFSetDropDownAndHidden(datas);
FileOutputStream stream = new FileOutputStream("d:\\testDropDown.xlsx");
workbook.write(stream);
stream.close();
}
public static Workbook XSSFSetDropDownAndHidden(String[] formulaString) {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("下拉列表测试");
Sheet hideSheet = workbook.createSheet("hiddenSheet");
for (int i = 0; i < formulaString.length; i++) {
hideSheet.createRow(i).createCell(0).setCellValue(formulaString[i]);
}
Name category1Name = workbook.createName();
category1Name.setNameName("hidden");
category1Name.setRefersToFormula("hiddenSheet!" + "$A$1:$A$" + formulaString.length);
DataValidationHelper helper = sheet.getDataValidationHelper();
DataValidationConstraint constraint = helper.createFormulaListConstraint("hidden");
CellRangeAddressList addressList = new CellRangeAddressList(0, 200, 0, 0);
DataValidation dataValidation = helper.createValidation(constraint, addressList);
if (dataValidation instanceof XSSFDataValidation) {
dataValidation.setSuppressDropDownArrow(true);
dataValidation.setShowErrorBox(true);
} else {
dataValidation.setSuppressDropDownArrow(false);
}
sheet.addValidationData(dataValidation);
workbook.setSheetHidden(1, true);
return workbook;
}
public static Workbook HSSFSetDropDown(String[] formulaString) {
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("下拉列表测试");
DVConstraint constraint = DVConstraint.createExplicitListConstraint(formulaString);
CellRangeAddressList regions = new CellRangeAddressList(0, 200, 0, 0);
DataValidation dataValidation = new HSSFDataValidation(regions, constraint);
sheet.addValidationData(dataValidation);
return workbook;
}
public static Workbook XSSFSetDropDown(String[] formulaString) {
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("下拉列表测试");
XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper(sheet);
XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint) dvHelper
.createExplicitListConstraint(formulaString);
CellRangeAddressList addressList = null;
XSSFDataValidation validation = null;
for (int i = 0; i < 500; i++) {
addressList = new CellRangeAddressList(i, i, 0, 0);
validation = (XSSFDataValidation) dvHelper.createValidation(dvConstraint, addressList);
sheet.addValidationData(validation);
}
return workbook;
}
public static Workbook SXSSFSetDropDown(String[] formulaString) {
SXSSFWorkbook workbook = new SXSSFWorkbook();
Sheet sheet = workbook.createSheet("下拉列表测试");
DataValidationHelper helper = sheet.getDataValidationHelper();
DataValidationConstraint constraint = helper.createExplicitListConstraint(formulaString);
CellRangeAddressList addressList = null;
addressList = new CellRangeAddressList(0, 500, 0, 0);
DataValidation dataValidation = helper.createValidation(constraint, addressList);
if (dataValidation instanceof XSSFDataValidation) {
dataValidation.setSuppressDropDownArrow(true);
dataValidation.setShowErrorBox(true);
} else {
dataValidation.setSuppressDropDownArrow(false);
}
sheet.addValidationData(dataValidation);
return workbook;
}
}
poi 版本

参考
最后
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?