使用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列,你可以相应地改变它。