我使用EPPlus ( http://epplus.codeplex.com/ )在我的ASP.NET应用程序中创建Excel文件。我想知道是否有人知道是否可以在一个单元格中创建一个带有复选框的下拉列表。我已经检查了文档,但到目前为止什么也没有找到。我也试过用谷歌搜索,但还没有找到任何正确的方向。
他们论坛上的这个问题实际上很好地展示了我正在寻找的东西,但它没有收到任何答案: http://epplus.codeplex.com/discussions/585879
有没有人碰巧有什么想法,可以给我指出正确的方向?
发布于 2015-07-24 16:43:16
您可以使用:
var validationCell = sheet.DataValidations.AddListValidation("A1"); validationCell.Formula.Values.Add("a"); validationCell.Formula.Values.Add("b"); validationCell.Formula.Values.Add("c"); ...
但您只能选择一个值。我认为excel不支持多个值。
发布于 2017-12-17 13:56:54
对于其他人的参考,下面是我如何启用多个值选择:
通过插入VBA代码:
查看如何在 here 中执行此操作,使用EPPlus时,您可以使用以下命令插入VBA代码:
package.Workbook.CreateVBAProject(); worksheet.CodeModule.Code = code;
下面的代码做到了这一点:
using (var package = new ExcelPackage(new System.IO.FileInfo("D:\\b.xlsm"))) ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("11"); var validationCell = worksheet.DataValidations.AddListValidation("A1"); validationCell.Formula.Values.Add("a"); validationCell.Formula.Values.Add("b"); validationCell.Formula.Values.Add("c"); string code = "Private Sub Worksheet_Change(ByVal Target As Range)\n" + "Dim Oldvalue As String\n" + "Dim Newvalue As String\n" + "Application.EnableEvents = True\n" + "On Error GoTo Exitsub\n" + "If Target.Address = \"$A$1\" Then\n" + " If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then\n" + " GoTo Exitsub\n" + "Else: If Target.Value = \"\" Then GoTo Exitsub Else\n" + " Application.EnableEvents = False\n" + "Newvalue = Target.Value\n" + "Application.Undo\n" + "Oldvalue = Target.Value\n" + " If Oldvalue = \"\" Then\n" + " Target.Value = Newvalue\n" + "Else\n" + " If InStr(1, Oldvalue, Newvalue) = 0 Then\n" + " Target.Value = Oldvalue & \", \" & Newvalue\n" + "Else: \n" + " Target.Value = Oldvalue\n" + "End If\n" + "End If\n" + "End If\n" + "End If\n" + "Application.EnableEvents = True\n" + "Exitsub: \n" + " Application.EnableEvents = True\n" +