使用ClosedXML创建下拉列表

6

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

我有两个Excel工作表:

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

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

Types的值为:

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;

我在单元格的右侧看到了下拉箭头,但是并没有看到其中的值。

1个回答

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);

你还需要隐藏数据验证工作表。这将确保数据源工作表对于你的工作表的用户是不可见的。由于你的工作表的用户看不到它,所以他们将无法更改下拉菜单的主数据。你可以使用以下代码实现:

worksheet2.Hide();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接