从 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# 中创建)的主要内容,如果未能解决你的问题,请参考以下文章