Excel:创builddynamic数据validation下拉的正确方法
我希望每次启动工作表时填充数据validation下拉列表。 下拉列表中的数据可能会不时变化,因为下拉内容是从我插件中使用的COM dll中提取的项目列表中派生的。 我创build了这样的下拉菜单:
void AddFieldValidationToCells<T>(Excel.Range range) { if (range == null) return; List<string> list = Enum.GetValues(typeof(T)) .Cast<T>() .Select(v => v.ToString()) .ToList(); list.Sort(); foreach (Excel.Range cell in range) { cell.Validation.Delete(); cell.Validation.Add( Excel.XlDVType.xlValidateList, Excel.XlDVAlertStyle.xlValidAlertInformation, Excel.XlFormatConditionOperator.xlBetween, string.Join(",", list), Type.Missing); cell.Validation.IgnoreBlank = true; cell.Validation.InCellDropdown = true; } }
这完美的作品。 唯一的问题是,如果工作表崩溃,当我重新打开它,我得到以下错误,我认为这与有关validation列表中的数据不再有一个引用的事实:
如果工作表正常closures,我的代码将删除validation,并且不会出现此错误,但是如果工作表出于某种原因挂起或以其他方式崩溃,是否有必要将此数据写入工作表以使其持久以避免这条信息?