【问题标题】:Create a dropdownList of checkboxes with EPPLUS Core in Asp Core 1.0在 Asp Core 1.0 中使用 EPPLUS Core 创建复选框的下拉列表
【发布时间】:2017-12-15 14:11:16
【问题描述】:

我设法在另一张表中添加了一个填充有值的下拉列表,但它只允许我选择一个值。

我有一个案例需要使用 EPPLUS 中的 DataValidation 选择多个值。

如何添加例如复选框列表而不是简单的下拉列表?

我试过了

var validationCell = sheet.DataValidations.AddListValidation("A1");
validationCell.Formula.Values.Add("a");
validationCell.Formula.Values.Add("b");
validationCell.Formula.Values.Add("c");

但我只能选择一个复选框,例如,我需要选择多个才能在一个数组中有多个值。

那么有什么方法可以让这个复选框下拉菜单让我选择多个值?

我找到了直接在 Excel 中创建它的教程: Tuto

是否可以用 EPPLUS Core 做同样的事情?

谢谢

【问题讨论】:

    标签: c# asp.net excel epplus


    【解决方案1】:

    您可以通过插入 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" +
    "End Sub";
    
                package.Workbook.CreateVBAProject();
                worksheet.CodeModule.Code = code;
                package.Save();
            }
    

    【讨论】:

    • 是的,但我的问题是如何从列表中删除项目?当我删除一个选择项时,验证被破坏。这就是为什么我想在下拉列表中有一个复选框列表
    • 删除选中的项目是什么意思?你能解释一下吗?
    • 例如我选择 3 个项目:一、二、三" 不在值列表中
    • 不过我觉得没关系,用户会删除单元格值,重新选择他需要的项目。 ^^ 谢谢你
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    相关资源
    最近更新 更多