Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Excel加载项--以编程方式添加到内存下拉列表/选择列表中_C#_Excel_Vsto - Fatal编程技术网

C#Excel加载项--以编程方式添加到内存下拉列表/选择列表中

C#Excel加载项--以编程方式添加到内存下拉列表/选择列表中,c#,excel,vsto,C#,Excel,Vsto,我一直在尝试在C#中创建Excel加载项。我想知道是否有可能通过编程为一个列创建一个下拉列表,其中的项目不必出现在工作表中?也就是说,我知道可以使用数据验证和一系列单元格来完成,但我不希望下拉项列表对用户可见/可编辑 如有任何有助于此的见解/链接,将不胜感激 谢谢您可以使用数据验证,在代码中设置列表,使用以下内容: var worksheet = (Worksheet)Globals.ThisAddIn.Application.ActiveSheet; var cell = (Rang

我一直在尝试在C#中创建Excel加载项。我想知道是否有可能通过编程为一个列创建一个下拉列表,其中的项目不必出现在工作表中?也就是说,我知道可以使用数据验证和一系列单元格来完成,但我不希望下拉项列表对用户可见/可编辑

如有任何有助于此的见解/链接,将不胜感激


谢谢

您可以使用数据验证,在代码中设置列表,使用以下内容:

var worksheet = (Worksheet)Globals.ThisAddIn.Application.ActiveSheet;
     var cell = (Range)worksheet.Cells[1, 1];
     cell.Validation.Add(
        XlDVType.xlValidateList, 
        XlDVAlertStyle.xlValidAlertStop, 
        XlFormatConditionOperator.xlBetween,
        "A, B, C, D, E");

这将创建包含项目a、B、C等的数据验证列表。。。不过,用户仍可通过验证菜单编辑这些内容。

感谢您的回复。我尝试了这种方法,创建了一个包含所有项目的字符串。它适用于少量项目,但对大量项目抛出异常。有什么办法可以解决这个问题吗?我们讨论了多少项目?如果您有大量的项目,下拉列表可能不是最好的方法,因为它变得不实用。大多数项目将有数百个,但有些项目将有数千个(在极端情况下可能有数万个,但决不是数十万个)。标准用法是根据下拉列表中的项目使用autocomplete输入。我想模拟一下TFS Excel加载项中的下拉列表是如何工作的(如果您碰巧熟悉它的话)。