基本的過程就是設置一個下拉選擇框的校驗,然后綁定到sheet的指定格子上。XSS和HSS的方式有些許不同,但是原理是一樣的。代碼示例如下:
//性別 String[] datas = new String[]{"男","女"}; if(excelType.equals(ExcelTypeEnum.XLSX)){ //數據驗證幫助程序 XSSFDataValidationHelper dvHelper2 = new XSSFDataValidationHelper((XSSFSheet) sheet); XSSFDataValidationConstraint dvConstraint2 = (XSSFDataValidationConstraint) dvHelper2.createExplicitListConstraint(datas); CellRangeAddressList regions2 =new CellRangeAddressList(1, 5000, 2, 2); XSSFDataValidation dataValidation2 = (XSSFDataValidation) dvHelper2.createValidation( dvConstraint2, regions2); sheet.addValidationData(dataValidation2); }else{ //性別 // 設置第5列的2-5000行為下拉列表 CellRangeAddressList regions2 = new CellRangeAddressList(1, 5000, 2, 2); // 創建下拉列表數據 DVConstraint constraint2 = DVConstraint.createExplicitListConstraint(datas); // 綁定 HSSFDataValidation dataValidation2 = new HSSFDataValidation(regions2, constraint2); sheet.addValidationData(dataValidation2); }
------------
完整的一個示例代碼如下。導入包后可以直接運行實驗。
package com.insigma; import java.io.FileOutputStream; import org.apache.poi.ss.util.CellRangeAddressList; 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 ExcelTest { public static void main(String[] args) { try{ dropDownList42007("D:\\test.xlsx"); }catch (Exception e) { e.printStackTrace(); } } public static void dropDownList42007(String filePath) throws Exception { XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet sheet = workbook.createSheet("下拉列表測試"); String[] datas = new String[] {"男","女"}; XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper(sheet); XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint) dvHelper.createExplicitListConstraint(datas); CellRangeAddressList addressList = new CellRangeAddressList(0, 100, 0, 0); XSSFDataValidation validation = (XSSFDataValidation) dvHelper.createValidation( dvConstraint, addressList); sheet.addValidationData(validation); FileOutputStream stream = new FileOutputStream(filePath); workbook.write(stream); stream.close(); } }
-----------------