从 Excel 的下拉列表中检索选定的值(在 C# 中创建)

Posted

技术标签:

【中文标题】从 Excel 的下拉列表中检索选定的值(在 C# 中创建)【英文标题】:Retrieve selected value from Drop Down List in Excel (created in C#) 【发布时间】:2014-01-03 00:36:11 【问题描述】:

我正在 C# 中创建一个具有下拉列表的 Excel 工作表。创建电子表格后,将无法访问列表中的选定值(非编程方式)。当我使用数据验证在 excel 中创建列表时,它工作正常。在 C# 中创建的列表似乎有所不同。图中可以看到AE单元格中的值应该是Z4的选中值,但是显示的是0。

我当前使用的代码是

    public static void CreateList(Worksheet sheet, string[] items, int col, string row)
    
        Range xlsRange;
        DropDowns xlDropDowns;
        DropDown xlDropDown;

        xlsRange = sheet.get_Range(col + row, col + row);
        xlDropDowns = ((DropDowns)(sheet.DropDowns(Type.Missing)));

        xlDropDown = xlDropDowns.Add((double)xlsRange.Left, (double)xlsRange.Top, (double)xlsRange.Width, (double)xlsRange.Height, true);
        for (int i = 0; i < items.Length; i++)
            xlDropDown.AddItem(items[i], i + 1);
    

我也尝试使用以下代码进行数据验证,但是当我尝试打开 Excel 电子表格时出现无法恢复的错误

        public static void CreateList(Worksheet sheet, string[] items, int col, int row)
    
        var flatList = string.Join(",", items);
        var cell = (Range)sheet.Cells[row, col];
        cell.Validation.Delete();
        cell.Validation.Add(XlDVType.xlValidateList, XlDVAlertStyle.xlValidAlertStop, XlFormatConditionOperator.xlBetween, flatList, Type.Missing);

        cell.Validation.IgnoreBlank = true;
        cell.Validation.InCellDropdown = true;
    

【问题讨论】:

【参考方案1】:

我弄清楚了为什么在使用下拉列表时会出现“excel 发现不可读的内容”错误。其中一个下拉菜单中的逗号分隔字符串太长。所以两组代码都有效。第一个是组合框,您只能在每个组合框上使用格式控制检索选定值的索引。第二个是不能用太长的字符串创建的下拉(验证)。

【讨论】:

以上是关于从 Excel 的下拉列表中检索选定的值(在 C# 中创建)的主要内容,如果未能解决你的问题,请参考以下文章

从 Thymeleaf 下拉列表中获取选定的值

ReactJS:如何从输入字段的下拉列表中显示选定的值?

从 sql server 获取选定的值到 php 中的下拉列表

如果多行中出现相同的值,则Excel创建下拉列表

如何获取c#中combox选定的值

JavaScript 从HTML下拉列表中获取选定的值