在 Asp Core 1.0 中使用 EPPLUS Core 创建复选框的下拉列表
Create a dropdownList of checkboxes with EPPLUS Core in Asp Core 1.0
我设法添加了一个下拉菜单,其中填充了另一个 sheet 中的值,但它只允许我 select 一个值。
我有一个案例需要在 EPPLUS 中使用 DataValidation select 多个值。
例如,我如何添加复选框列表而不是简单的下拉列表?
我试过了
var validationCell = sheet.DataValidations.AddListValidation("A1");
validationCell.Formula.Values.Add("a");
validationCell.Formula.Values.Add("b");
validationCell.Formula.Values.Add("c");
但我只能 select 一个复选框,我需要 select 多个才能在数组中包含多个值。
那么有什么方法可以使这个复选框下拉菜单允许我选择多个值吗?
我在 Excel 中找到了直接创建它的教程:
Tuto
是否可以用 EPPLUS Core 做同样的事情?
谢谢
您可以通过插入 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\" 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();
}
我设法添加了一个下拉菜单,其中填充了另一个 sheet 中的值,但它只允许我 select 一个值。
我有一个案例需要在 EPPLUS 中使用 DataValidation select 多个值。
例如,我如何添加复选框列表而不是简单的下拉列表?
我试过了
var validationCell = sheet.DataValidations.AddListValidation("A1");
validationCell.Formula.Values.Add("a");
validationCell.Formula.Values.Add("b");
validationCell.Formula.Values.Add("c");
但我只能 select 一个复选框,我需要 select 多个才能在数组中包含多个值。
那么有什么方法可以使这个复选框下拉菜单允许我选择多个值吗?
我在 Excel 中找到了直接创建它的教程: Tuto
是否可以用 EPPLUS Core 做同样的事情?
谢谢
您可以通过插入 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\" 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();
}