Excel里面的下拉框数据来源是从一个隐藏sheet中获取,
新建一个的隐藏sheet,sheet首列放置下拉框数据
通过XSSFDataValidationConstraint类将数据和下拉框关联起来,
部分代码
int sheetTotal=wb.getNumberOfSheets();
XSSFRow row;
//第一个下拉选
//新建一个sheet页
String hiddenSheetName = "hiddenSheet" + sheetTotal;
XSSFSheet hiddenSheet = wb.createSheet(hiddenSheetName);
//数据
//写入下拉数据到新的sheet页中
for (int i = 0; i < financePaymentArr.size(); i++) {
row = hiddenSheet.createRow(i);
XSSFCell cell = row.createCell(0);
cell.setCellValue(financePaymentArr.get(i));
}
//获取新sheet页内容
String strFormula = hiddenSheetName + "!$A$1:$A$65535";
XSSFDataValidationConstraint constraint = new XSSFDataValidationConstraint(DataValidationConstraint.ValidationType.LIST,strFormula);
// 设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列
CellRangeAddressList regions = new CellRangeAddressList(1,1, 1, 1);
// 数据有效性对象
DataValidationHelper help = new XSSFDataValidationHelper((XSSFSheet) sheet);
DataValidation validation = help.createValidation(constraint, regions);
sheet.addValidationData(validation);
//将新建的sheet页隐藏掉
wb.setSheetHidden(sheetTotal, true);
sheetTotal++;