使用VSTO C#的Excel单元格下拉列表项目是否有任何限制?
我正在使用vsto
来创buildexcel加载项。 我将validation添加到单元格,并将其作为Dropdown
。 下拉列表的数据源存在于另一列中。 我正在使用这个代码。
string values = string.Join(",", cellValuesArray); cellRange.Validation.Delete(); cellRange.Validation.Add(Excel.XlDVType.xlValidateList, Excel.XlDVAlertStyle.xlValidAlertStop, Excel.XlFormatConditionOperator.xlBetween, values , Type.Missing); cellRange.Validation.InCellDropdown = true;
现在,如果cellValuesArray
包含超过1200(约)的项目,那么它会抛出一个错误说
在mscorlib.dll中发生types“System.Runtime.InteropServices.COMException”的exception,但未在用户代码中处理
附加信息:来自HRESULT的exception:0x800A03EC
如果项目的数量很小,如600-700,它工作正常。 我不知道如何解决这个问题。
那么我怎样才能以这样的方式添加validation,以便我的下拉菜单可以保存超过1K条logging,或者可能比这更高?
经过大量的研究,终于find了解决办法。 如果您想要在Excel单元格的下拉列表中input大量数据,则使用公式是比使用List
项更好的解决scheme。
string formula = "='SheetName'!$B$2:$B$" + lastRowIndex; cellRange.Validation.Add(Excel.XlDVType.xlValidateList, Excel.XlDVAlertStyle.xlValidAlertStop, Excel.XlFormatConditionOperator.xlBetween, formula , Type.Missing);
我在这里使用B
列,你可以相应地改变它。