使用 ClosedXML 创建下拉列表

Vik*_*ash 6 .net c# excel closedxml

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

我有两张Excel表

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

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

类型值为:

Employee

Student

Teacher 
Run Code Online (Sandbox Code Playgroud)

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

我在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;
Run Code Online (Sandbox Code Playgroud)

我在单元格的右端看到了下拉符号,但没有得到其中的值。

RBT*_*RBT 6

以下是定义范围的方法。

此处,工作表 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);
Run Code Online (Sandbox Code Playgroud)

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

worksheet2.Hide();
Run Code Online (Sandbox Code Playgroud)