我想使用数据验证在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");
目前此源代码会生成如下组合框:
我要在C#中使用ClosedXML以编程方式实现多选行为。
答案 0 :(得分:1)
开发人员选项卡不需要Visual Studio;它只是隐藏起来。
File
→Options
→:Customize Ribbon
。Developer
列表下的Main Tabs
复选框。OK
。一个新的菜单'将显示在名为Developer
的功能区上,其中的类别包括代码,加载项,控件,XML,修改(根据您的版本而有所不同)。
在Excel中,您无法轻易转换"控件从一种类型到另一种类型,如Access等,但在开发人员菜单可见的情况下,您现在可以创建一个列表框,并从您的组合框复制VBA。
如果您为列表框指定了组合框的名称(删除组合框后),则转换将更加容易。 (如果没有,总是 Ctrl + H 搜索和替换!)
答案 1 :(得分:0)
ClosedXML不支持表单控件。