我使用vsto
创建excel加载项。我正在为一个单元格添加一个验证并将其作为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(约)项,那么它会抛出错误
类型' System.Runtime.InteropServices.COMException'的例外情况发生在mscorlib.dll中但未在用户代码中处理
附加信息:来自HRESULT的异常:0x800A03EC
如果项目数量很小,如600-700,它可以正常工作。我不知道如何解决这个问题。
那么如何以这种方式添加验证,以便我的下拉列表可以保存超过1K的记录,或者可能远高于此记录?
答案 0 :(得分:0)
经过大量的研究,我终于找到了解决方案。如果您想要在excel单元格的下拉列表中获取大量数据,那么使用公式是比使用List
项目更好的解决方案。
string formula = "='SheetName'!$B$2:$B$" + lastRowIndex;
cellRange.Validation.Add(Excel.XlDVType.xlValidateList, Excel.XlDVAlertStyle.xlValidAlertStop,
Excel.XlFormatConditionOperator.xlBetween, formula , Type.Missing);
我在这里使用列B
,您可以相应地更改它。