easyExcel使用记录
- 使用createFormulaListConstraint解决下拉栏过多的问题
主要内容是创建一个单独的sheet来保存下拉的值,然后在createFormulaListConstraint方法中指定下拉选项的取值范围
1 public class TestHandler implements SheetWriteHandler { 2 3 4 /** 5 * 市 6 */ 7 private List<String> cityNames; 8 9 10 11 public TestHandler(){ 12 13 } 14 15 public TestHandler( List<String> cityNames) { 16 this.cityNames = cityNames; 17 } 18 19 20 @Override 21 public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) { 22 23 } 24 25 /** 26 * Excel下拉栏从字典表查询进行动态填充 27 * @param writeWorkbookHolder 28 * @param writeSheetHolder 29 */ 30 @Override 31 public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) { 32 DataValidationHelper helper = writeSheetHolder.getSheet().getDataValidationHelper(); 33 Workbook workbook = writeWorkbookHolder.getWorkbook(); 34 if(cityNames != null && cityNames.size()>0){ 35 Sheet citySheet = workbook.createSheet("citySheet"); 36 for (int i = 0; i < cityNames.size(); i++) { 37 Row row = citySheet.createRow(i); 38 Cell cell = row.createCell(0); 39 cell.setCellValue(cityNames.get(i)); 40 } 41 CellRangeAddressList cellRangeAddressList = new CellRangeAddressList(1, 100, 10, 10); 42 DataValidationConstraint formulaListConstraint = helper.createFormulaListConstraint("citySheet!$A$1:$A$" + cityNames.size()); 43 DataValidation dataValidation = helper.createValidation(formulaListConstraint, cellRangeAddressList); 44 dataValidation.createErrorBox("错误", "请按右侧下拉箭头选择!"); 45 dataValidation.setShowErrorBox(true); 46 writeSheetHolder.getSheet().addValidationData(dataValidation); 47 } 48 49 } 50 }

浙公网安备 33010602011771号