给指定列添加下拉列表。以下图:html
new String[]{"10", "20", "30"})
。这种方式限制最大长度255./// <summary> /// The add validation. /// </summary> /// <param name="sheet"> /// 要加入列表的sheet /// </param> /// <param name="itemSheet"> /// 选项 sheet. /// </param> /// <param name="headerCell"> /// 标题单元格 /// </param> /// <param name="items"> /// 列表项 /// </param> private static void AddValidation(ISheet sheet, ISheet itemSheet, ICell headerCell, List<string> items) { // 新建行 var row = itemSheet.CreateRow(itemSheet.PhysicalNumberOfRows); // 新行中写入选项 for (int i = 0; i < items.Count; i++) { var cell = row.CreateCell(i); cell.SetCellValue(items[i]); } // 要加下拉列表的范围 var addressList = new CellRangeAddressList( headerCell.RowIndex + 1, 65535, headerCell.ColumnIndex, headerCell.ColumnIndex); var dvHelper = sheet.GetDataValidationHelper(); // 格式 Sheet2!$A$1:$E$1 var dvConstraint = dvHelper.CreateFormulaListConstraint( $"{itemSheet.SheetName}!$A${row.RowNum + 1}:${Common.Util.NumberToLetter(items.Count)}${row.RowNum + 1}"); var validation = dvHelper.CreateValidation(dvConstraint, addressList); // 强制必须填下拉列表给出的值 // validation.ShowErrorBox = true; sheet.AddValidationData(validation); }
调用以客户列举例git
// 获取客户列表 var list = new CustomerBll().GetModelList("dr = 0"); var items = list.Select(c => c.cusname).ToList(); // 添加下拉 AddValidation(sheet, itemsSheet, headerRow.Cells.First(c => c.StringCellValue == "客户名称"), items);
参考资料:github