【发布时间】:2018-05-08 09:04:57
【问题描述】:
我想在excel电子表格中使用数据验证实现多选列表框。
我找到了一个链接here,它谈到了MS-excel中的开发人员选项卡,我可以在其中拖放一个列表框控件来实现列表框效果。可能是 Visual Studio tools for Office (VSTO) 路线。我不想走这条路。
相反,我试图通过数据验证和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 以编程方式实现多选行为。
【问题讨论】:
-
使用 ClosedXML,您可以从磁盘加载现有文件并检查它们。我建议手动创建一个包含此控件的 Excel 文档,然后将其加载到 ClosedXML 中并调试特定单元格/范围的内容。看看你得到了什么很有趣。
-
@RBT 您找到任何解决方案了吗,请告诉我。我也在同一页面上,我正在尝试使用 OpenXML nuget 包来实现此功能。
标签: c# excel listbox multi-select closedxml