如何使用EPPLUS for C#在Excel中创建相关下拉列表?

mzillmmw  于 2023-02-10  发布在  C#
关注(0)|答案(1)|浏览(435)

我在用EPPLUS / C#生成excel文件,我可以创建一个下拉列表,这不是问题,我很难找到一个例子来说明如何创建依赖的下拉列表(例如,国家,地区)
有人做过吗?
下面是一个只添加下拉列表的示例:

var range = ExcelRange.GetAddress(1, 2, ExcelPackage.MaxRows, 2);
    var val = ws.DataValidations.AddListValidation(range);
    val.ShowErrorMessage = true;
    val.Formula.Values.Add("US");
    val.Formula.Values.Add("CA");

因此,我想做的是在国家/地区旁边添加一个区域单元格,该单元格将根据所选国家/地区进行过滤。

wwtsj6pe

wwtsj6pe1#

我可以使用OFFSET、MATCH和COUNTA excel函数来实现这一点。我看了这段视频,并能够实现Leila的解决方案Smart Dependent Dropdown lists in Excel。她介绍了使用的每个excel函数。我跟随我自己的工作表,并能够实现到我的代码中。
例如:

using (var package = new ExcelPackage("filename"))
{
 var foodsSheet = package.Workbook.Worksheets.Add("Foods");
 foodsSheet.Cells["A1"].Value = "Fruit";
 foodsSheet.Cells["A2"].Value = "Apple";
 foodsSheet.Cells["A3"].Value = "Orange";
 foodsSheet.Cells["A4"].Value = "Banana";

 foodsSheet.Cells["B1"].Value = "Veggies";
 foodsSheet.Cells["B2"].Value = "Lettuce";
 foodsSheet.Cells["B3"].Value = "Tomato";
 foodsSheet.Cells["B4"].Value = "Onion";

 var dataList = foodsSheet.DataValidations.AddListValidation("D1");
 dataList.Formula.ExcelFormula = "$A$1:$B$1";
 var dependentList = foodsSheet.DataValidations.AddListValidation("E1");

 //This is where the video comes in handy.
 dependentList.Formula.ExcelFormula = 
     "OFFSET($A$1,1, +
     MATCH($D$1,$A$1:$B$1,0)-1, +
     COUNTA(OFFSET($A$1,1, +
     MATCH($D$1,$A$1:$B$1,0)-1,5,1)),1)"
  package.Save()
 }

希望这能有所帮助!

相关问题