使用ClosedXML创建下拉列表

本文关键字:下拉列表 创建 ClosedXML 使用 | 更新日期: 2023-09-27 18:13:48

我在我的项目中实现了Excel模板下载。我使用ClosedXML

我有两个excel表格

Sheet1 :在这个工作表中,我有一个名为类型的列,我可以在其中创建下拉列表,它是第三列。

Sheet2 :在这个表中,我有一个名为Types的列,其范围地址是:B2:B4,它是第二列。

类型值:

Employee
Student
Teacher 

现在,我想创建一个下拉列表。

我在ClosedXML中创建了一个下拉列表,代码是:

//Getting the range of sheet 2
var range = workbook.Worksheet(2).Range(workbook.Worksheet(2).Cell(2,2).Address,workbook.Worksheet(2).Cell(4,2).Address);
//Applying sheet 2's range with sheet 1 
workbook.Worksheet(1).Column(3).SetDataValidation().List(range:range);
wb.Worksheet(1).Column(3).SetDataValidation().IgnoreBlanks = true;
wb.Worksheet(1).Column(3).SetDataValidation().InCellDropdown = true;

我在单元格的右端得到了下拉符号,但是我没有得到里面的值

使用ClosedXML创建下拉列表

如何定义范围

在这里,工作表2中的单元格范围将作为工作表1中下拉列表项的源。如果在下拉菜单中显示的项目已经已知,那么您可以这样做:

//get a reference to worksheet 2 containing various type values - Employee, Student, Teacher:
var worksheet2 = workbook.Worksheet(2);
//Applying sheet 2's range validation in sheet 1  where drop down list is to be shown
workbook.Worksheet(1).Column(3).SetDataValidation().List(worksheet2.Range("B2:B4"), true);

您还应该隐藏数据验证工作表。这将确保数据源工作表对工作表的用户是隐藏的。由于工作表的用户不会看到它,因此他们将无法更改下拉列表的主数据。您可以使用下面的代码行来实现:

worksheet2.Hide();