首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用EPPlus创建复选框下拉列表

使用EPPlus创建复选框下拉列表
EN

Stack Overflow用户
提问于 2015-06-25 20:19:18
回答 2查看 3.6K关注 0票数 1

我使用EPPlus (http://epplus.codeplex.com/)在我的ASP.NET应用程序中创建Excel文件。我想知道是否有人知道是否可以在一个单元格中创建一个带有复选框的下拉列表。我已经检查了文档,但到目前为止什么也没有找到。我也试过用谷歌搜索,但还没有找到任何正确的方向。

他们论坛上的这个问题实际上很好地展示了我正在寻找的东西,但它没有收到任何答案:http://epplus.codeplex.com/discussions/585879

有没有人碰巧有什么想法,可以给我指出正确的方向?

EN

回答 2

Stack Overflow用户

发布于 2015-07-24 16:43:16

您可以使用:

代码语言:javascript
运行
复制
var validationCell = sheet.DataValidations.AddListValidation("A1");
validationCell.Formula.Values.Add("a");
validationCell.Formula.Values.Add("b");
validationCell.Formula.Values.Add("c");
...

但您只能选择一个值。我认为excel不支持多个值。

票数 4
EN

Stack Overflow用户

发布于 2017-12-17 13:56:54

对于其他人的参考,下面是我如何启用多个值选择:

通过插入VBA代码:

查看如何在here中执行此操作,使用EPPlus时,您可以使用以下命令插入VBA代码:

代码语言:javascript
运行
复制
package.Workbook.CreateVBAProject();
worksheet.CodeModule.Code = code;

下面的代码做到了这一点:

代码语言:javascript
运行
复制
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();
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31050195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档