使用数据验证的Excel电子表格中的多选列表框

时间:2017-11-24 10:54:07

标签: c# excel listbox multi-select closedxml

我想使用数据验证在Excel电子表格中实现多选列表框。

我找到了一个链接here,其中讨论了MS-excel中的开发人员选项卡,我可以拖放一个列表框控件来实现列表框效果。可能是Office(VSTO)路由的Visual Studio工具。我不想走这条路。

相反,我正试图通过数据验证和ClosedXML nuget包来实现它。

我已经有下面的代码,我可以创建一个下拉列表,但不知道如何将其转换为多选列表框:

//imported namespaces
using ClosedXML.Excel;
using System;
using System.Data;

//code in main method
var workbook = new XLWorkbook();

DataTable userData = new DataTable("Sheet1");
userData.Columns.Add("Master Column");


workbook.AddWorksheet(userData);
var worksheet = workbook.Worksheet(1);


 DataTable validationTable = new DataTable();
 validationTable.Columns.Add("DropDownItems");
 validationTable.TableName = "Sheet2";

 DataRow dr = validationTable.NewRow();
 dr["DropDownItems"] = "Item1";
 validationTable.Rows.Add(dr);

 dr = validationTable.NewRow();
 dr["DropDownItems"] = "Item2";
 validationTable.Rows.Add(dr);

 dr = validationTable.NewRow();
 dr["DropDownItems"] = "Item3";
 validationTable.Rows.Add(dr);


 workbook.AddWorksheet(validationTable);
 var worksheet2 = workbook.Worksheet(2);
 worksheet.Column(1).SetDataValidation().List(worksheet2.Range("A2:A4"), true);

  //keep the data validation worksheet hidden
  worksheet2.Hide();

  workbook.SaveAs(@"C:\myworkbook.xlsx");

目前此源代码会生成如下组合框:

enter image description here

我要在C#中使用ClosedXML以编程方式实现多选行为。

2 个答案:

答案 0 :(得分:1)

开发人员选项卡不需要Visual Studio;它只是隐藏起来。

  • 左侧的FileOptions→:Customize Ribbon
  • 点击右侧Developer列表下的Main Tabs 复选框
  • 点击OK

Developer Options

一个新的菜单'将显示在名为Developer的功能区上,其中的类别包括代码,加载项,控件,XML,修改(根据您的版本而有所不同)。

在Excel中,您无法轻易转换"控件从一种类型到另一种类型,如Access等,但在开发人员菜单可见的情况下,您现在可以创建一个列表框,并从您的组合框复制VBA。

Developer Toolbar2

如果您为列表框指定了组合框的名称(删除组合框后),则转换将更加容易。 (如果没有,总是 Ctrl + H 搜索和替换!)

答案 1 :(得分:0)

ClosedXML不支持表单控件。