給指定列添加下拉列表。以下圖: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