Gau*_*rek 1 .net c# excel closedxml
大家好,我正在尝试使用 ClosedXML 库为 excel 中的列创建一个下拉列表。我可以使用下面的代码成功创建它。
using (XLWorkbook wb = new XLWorkbook())
{
wb.Worksheets.Add(dt);
wb.Worksheets.Add(dt2);
var worksheet2 = wb.Worksheet(2);
//wb.Worksheet(1).Column(11).SetDataValidation().List("one,two,three", true); This does not work fine
wb.Worksheet(1).Column(11).SetDataValidation().List(worksheet2.Range("A2:A12"), true);// Works fine
wb.Worksheet(1).Column(11).SetDataValidation().IgnoreBlanks = true;
wb.Worksheet(1).Column(11).SetDataValidation().InCellDropdown = true;
wb.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
wb.Style.Font.Bold = true;
wb.SaveAs(targetFile);
}
Run Code Online (Sandbox Code Playgroud)
但我想用 SetDataValidation() 中的 List 的另一个重载方法做同样的事情,但那是创建 Excel,但当我尝试打开它时,它说它已损坏。您能否帮助我理解为什么其他重载方法不起作用。
有问题的方法是public void List(String list, Boolean inCellDropdown)。根据数据验证 wiki 页面,可以使用字符串列表:
//Pass a string in this format: "Option1,Option2,Option3"
var options = new List<string>{"Option1","Option2","Option3"};
var validOptions = $"\"{String.Join(",", options)}\"";
ws.Cell(1,1).DataValidation.List(validOptions, true);
Run Code Online (Sandbox Code Playgroud)
根据数据验证wiki 页面,列表列表必须包含双引号。
在文档示例中:
var options = new List<string>{"Option1","Option2","Option3"};
var validOptions = $"\"{String.Join(",", options)}\"";
ws.Cell(1,1).DataValidation.List(validOptions, true);
Run Code Online (Sandbox Code Playgroud)
validOptions包含:
"Option1,Option2,Option3"`
Run Code Online (Sandbox Code Playgroud)
您自己的代码应更改为:
.List("\"one,two,three\"", true);
Run Code Online (Sandbox Code Playgroud)